2

Kohana ORM Auth を使用した Web サイトがあります。私は ajax 経由で呼び出されたときにユーザーがログインしているかどうかを確認し、ユーザーの役割に対応する json_encoded データを返す URL を持っています。この URL は、通常のブラウザ ウィンドウで試してみると正常に機能しています。正しい値を返していましたが、AJAX 呼び出しを介して試行すると、ユーザーがログインしていると確信していても、Auth::instance()->logged_in() は FALSE を返します。次のリンク jQueryに記載されている手順に従っています。 getJSON は Cookie を送信 しませんが、問題は解決しませんでした。

これまでに行ったことは、ベースコントローラーと、リクエストアクションが記述されているファイルに次の行を追加したことです

header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET, POST');  
header('Access-Control-Allow-Credentials: TRUE'); 

実際のリクエストを送信する前のajaxでは、次のコードが書かれています

beforeSend: function(xhr){
            xhr.withCredentials = true;
        },

編集 - - - - - - -

以下を使用してみましたが、CORの問題が発生しました。

$.ajax({
        type: 'GET',
        url: "http://www.domain.com/web/joblist",
        xhrFields: {
            withCredentials: true
        },
        dataType: "json",
        data:{
            "tab":currentTab,
            "page":currentPage,
            "filter":filterStr
        },
        success: function(json){  ...
        },
        error: function(e) {
            ...
        }
    });
4

3 に答える 3

2

データ型: jsonp を使用します。

これで問題が解決することを願っています。

于 2014-09-06T03:09:26.787 に答える
2

ブラウザーを使用して AJAX 呼び出しを要求していますか? (CURL リクエストではありません)。その場合は、AJAX 呼び出しが成功したかどうか、およびそれが何を返すかを確認します (たとえば、firefox の firebug コンソール タブを使用します)。

同じドメイン上にあると述べているため、資格情報について心配する必要はないように思えます。したがって、ユーザーがログインしているかどうかのチェックは、AJAX エンドポイントの php コントローラーによって行われます。

したがって、通常の AJAX 呼び出しでは、誰かがログインしているかどうかを確認できるコントローラーを呼び出すことができるはずです。

// set ajax setup
$.ajaxSetup({
type : "GET",
statusCode : {
    404 : function() {
        alert('Page not found.');
    },
    500 : function() {
        alert('Server error.');
    }
}

});

$.ajax({
    dataType : "json",
    url : 'some/uri/',
    data : {
        name : name
    },
    success : function(response) {
       // do something with the response
    }
});

これは役に立ちますか、それとも私はあなたの要点を完全に見逃しましたか?

于 2014-09-09T14:07:54.800 に答える
0

問題は、www. URLの先頭に追加されておらず、認証はwwwを持たないURLからのサービスリクエストを拒否していました。その前に追加します。

于 2014-09-19T07:06:50.147 に答える