1

応答オブジェクトに Cookie を設定する WebApi サービスを呼び出しています。呼び出しは $resource 経由で angularjs から行われるため、これはサーバー コードです。

CookieHeaderValue cookie = new CookieHeaderValue("Token", "blah") { HttpOnly = true, Expires = DateTime.Now.AddYears(10), Path="/"  };
response.Headers.AddCookies(new CookieHeaderValue[] { cookie });

これは機能します。応答に Set-Cookie ヘッダーが表示されますが、Cookie が設定されていません。

私の友人は、jQuery を使用しているときに xhrFields の withCredentials を true に設定しなければならなかったので、angular でも設定する必要があるものがあるのだろうか?

4

1 に答える 1

1

いろいろなことが起こっている可能性があります。

まず、別々のドメインにいるため、COR (クロス オリジン リソース シェアリング)を実装する必要があるかもしれませんが、要求は正常に行われているようです。なぜそれが機能するのかはわかりませんが、ブラウザがそれを防ぐと思います。いずれにせよ、angularjs で COR を使用して $http と $resource の両方のリクエストを作成する方法を示す jsfiddle を次に示します。トリックは $http サービスを設定することのようです:

 $http.defaults.useXDomain = true;

もう 1 つの考えは、あるドメインからの Cookie は別のドメインからアクセスできないということです。angularjs を使用した Cookie に関する別の質問ですが、リクエストとサーバーは同じドメインにあるようです。ここでは、Cookie ドメインとその適用方法について説明します。

可能であれば、Cookie の要求/応答を同じドメインで動作させてから、クライアントを別のドメインに移動します。

于 2013-03-05T18:29:31.000 に答える