37

問題に直面しました。

レスポンスに複数のSet-Cookieヘッダーを追加する場合

headers.Add("Set-Cookie", "a=b;Path=/;");
headers.Add("Set-Cookie", "c=d;Path=/;");

実際にはそれらは結合され、コンマ区切りの Cookie とともに 1 つのヘッダーのみが送信されます

Set-Cookie: a=b;Path=/;,c=d;Path=/;

RFC2109によれば、これは有効な構文です。しかし、それはRFC2109を廃止するRFC6265に従っていません

さらに、最新のブラウザーは、このカンマ区切りの構文もサポートしていません。IE9Firefox 13Google Chrome 20でテスト済み。

これらのブラウザーはすべて、最初の Cookie のみを受け取りました。

以下のサンプルプロジェクトを参照してください

https://github.com/mnaoumov/cookie-bug/

私はいくつかの回避策を見つけたいです。

2 つの異なるSet-Cookieヘッダーがあると予想しています。

HTTP ヘッダーを書き換えるために、いくつかのMessageInspectorを作成しようとしました。そのヘッダーにアクセスする方法が見つかりませんでした。

何か案は?

PS 使用技術:Web API

4

2 に答える 2

9

codeplexに関する回答( http://aspnetwebstack.codeplex.com/workitem/288 )によると、この問題は既知の問題であり、WCF セルフホスティングに関連しており、IIS ホスティングに移行することで修正する必要があります。

これは、won't fixとしてマークされた WCF 4 の問題です。

同じ結果の別の質問が見つかりましたWCF 4.0 Cookie Only First is Recorded by Browser

于 2012-07-29T04:08:33.487 に答える
1

HttpContext.Current.Response.SetCookie を使用できます

using System.Web;


HttpCookie foo = new HttpCookie("foo", "true");
HttpContext.Current.Response.Cookies.Add(foo); 

HttpCookie bar = new HttpCookie("bar", "true");
HttpContext.Current.Response.Cookies.Add(bar);

これにより、応答に複数の set-cookies ヘッダーが追加されます。

編集:また、追加する必要があります

<serviceHostingEnvironment multipleSiteBindingsEnabled="true" aspNetCompatibilityEnabled="true"/>

あなたのweb.configで

于 2016-04-21T18:51:02.753 に答える