2

jQueryajaxリクエストの一部としてサブドメインWebアプリケーションに送信されるようにJavaScriptでブラウザに設定されたCookieを取得できないようです。

ルートドメインとサブドメインの2つのWebアプリケーションがあります。クロスサイトスクリプティングの制限を回避するために、私のサブドメインWebアプリケーションは、グローバルアクションフィルターを実装して、Access-Control-Allow-Originヘッダーをすべてのhttp応答のルートドメインに追加します。これにより、ルートドメインからサブドメインへのajax呼び出しが機能します。

しかし、次のコードを使用してjavascriptでCookieを作成すると...

var myDate = new Date();
myDate.setMonth(myDate.getMonth() + 12);
document.cookie = 'searchId=' + ids.generateGUID() + ';domain=' + ".root.example.com" + ';path=/;expires=' + myDate;

... Cookieは、後続のajaxリクエストで-サブドメインサーバーに渡されません。

CORSヘッダーとCookieのドメインとパスの設定により、サブドメインのWebアプリケーションがCookieにアクセスできるようになると思いましたが、ブラウザー(chrome21.0.1180.89とfirefox17.0.1)はCookieを提供していないようです。

サブドメインとajaxリクエストを使用するときにブラウザのCookieアクセス制限を誤解していますか?

ありがとう

4

1 に答える 1

5

CookieがCORSで機能するためには、2つのことを行う必要があります。

まず、サーバーは次のヘッダーで応答する必要があります。

Access-Control-Allow-Credentials: true

次に、XmlHttpRequestオブジェクトでwithCredentialsプロパティを設定する必要があります。

xhr.withCredentials = true;

これにより、リクエストでリモートドメインCookieが送信されますが、Cookieはリモートサーバーによって設定される必要があります。

JSコード自体はまだCookieにアクセスできず、リモートドメインにCookieを設定することもできません。AFIAKforJSコードが別のドメインのCookieにアクセスする方法はありません。

于 2013-01-16T16:48:38.300 に答える