問題に直面しました。
複数のSet-Cookieヘッダーを応答に追加する場合
headers.Add("Set-Cookie", "a=b;Path=/;");
headers.Add("Set-Cookie", "c=d;Path=/;");
実際にはそれらは結合され、1つのヘッダーのみがコンマ区切りのCookieで送信されます
Set-Cookie: a=b;Path=/;,c=d;Path=/;
RFC2109 によると、これは有効な構文です。しかし、それは RFC6265 に従わず、これはRFC2109を非推奨にします
さらに、最新のブラウザはこのコンマ区切りの構文もサポートしていません。テスト済みIE9、Firefox 13およびGoogle Chrome 20。
これらのブラウザーはすべて、最初のCookieのみを取りました。
以下のサンプルプロジェクトをご覧ください
https://github.com/mnaoumov/cookie-bug/
回避策を見つけたいです。
2つの異なるSet-Cookieヘッダーが必要です。
HTTPヘッダーを書き換えるために、いくつかMessageInspectorを書き込もうとしました。そのヘッダーにアクセスする方法が見つかりませんでした。
何か案は?
追伸使用技術:Web API
codeplex( http://aspnetwebstack.codeplex.com/workitem/288 )の回答によると、この問題は既知の問題ですWCFセルフホスティングに関連しており、IISホスティングに移動して修正する必要があります。
これは、と修正されないとマークされたWCF 4の問題です。
同じ結果の別の質問が見つかりました WCF 4.0 Cookie Only First is Recorded by Browser 。
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で