1

私の問題をよりよく説明するために、質問は次のようになります。

JSONPリクエストからセッションを開始できますか?

詳細:ブラウザからmyserver.comに対してJSONPリクエストが行われたとします。myserver.comはJSONP応答を介してCookieを設定できます。これにより、後でmyserver.comに再度リクエストが行われたときに(doc.host = myserver.comの場合は直接、または任意のdoc.hostからの別のJSONPリクエストを介して間接的に)Cookieを設定できます。クッキーが送信されますか?現在、ブラウザはJSONP応答で送信するCookieを無視しているようです。私が欲しいことは可能ですか?ここで何が欠けていますか?

編集:これは私が行うリクエストです。最新のjqueryをフェッチしてjsファイルをロードするダミーのローカルhtmlを介してローカルjsファイルをロードします。

$.ajax({
  url: "http://my-remote-server/jsonp/service/test",
  dataType: 'jsonp',
  data: {some:'data'},
  success:   function(responseData)
            {console.log(responseData);}
    });

上記のJSONPリクエストの応答は、Cookieを設定しています。クロムがそれを報告するので、これは確認されます。問題は、上記を2回実行しただけでは、以前に設定されたCookieがサーバーに返送されないことです。

編集2:Chrome cookieブラウザ(内部ページ)に移動しましたが、JSONP応答で受信したと報告されていますが(chromeのデバッグコンソール)、cookieが見つかりません。これは、サーバーがそれを送信し、ブラウザーがそれを認識してから破棄することを意味します。

4

2 に答える 2

3

私は解決策を見つけました。これは、この問題を扱っている人にとって興味深い情報です。

ウィキペディアの定義から:

サードパーティ Cookie は、アドレス バーに表示されるドメインとは異なるドメインで設定される Cookie です。

私が間違っていなければ、これによりすべての JSONP セット Cookie、サードパーティ Cookie の 99.99% が作成されます。私の場合、アドレスバーに表示されるアドレスはfile://であり、これにより、Cookie がサードパーティのものになります。

サードパーティの Cookie を有効にするとすぐに機能しました。

ちなみに、Chrome はデフォルトで file:// ページの Cookie をサポートしておらず、doean はこれを警告または通知しません。頭痛の種です。詳細については、こちらこちらをご覧ください。

于 2012-05-26T12:05:18.680 に答える
1

はい。動的画像リクエストやCSSリクエストなども同様です。XHRリクエストの場合は、応答ヘッダーを読み取ることもできます(Set-Cookie etal)。

現在、Cookieはどのように無視されますか?どうやってわかりますか?

于 2012-05-26T01:32:09.303 に答える