在ASP.NET Web中添加多个集Cookie标头
我面临一个问题 添加多个时,将Cookie标题设置为响应在ASP.NET Web中添加多个集Cookie标头,web,asp.net-web-api,cookies,Web,Asp.net Web Api,Cookies,我面临一个问题 添加多个时,将Cookie标题设置为响应 headers.Add("Set-Cookie", "a=b;Path=/;"); headers.Add("Set-Cookie", "c=d;Path=/;"); 实际上,它们是组合在一起的,并且只有一个标头与逗号分隔的cookie一起发送 Set-Cookie: a=b;Path=/;,c=d;Path=/; 根据它是一个有效的语法。 但它不是根据,它不赞成RFC2109 此外,最新的浏览器也不支持这种逗号分隔的语法。在IE9、
headers.Add("Set-Cookie", "a=b;Path=/;");
headers.Add("Set-Cookie", "c=d;Path=/;");
实际上,它们是组合在一起的,并且只有一个标头与逗号分隔的cookie一起发送
Set-Cookie: a=b;Path=/;,c=d;Path=/;
根据它是一个有效的语法。
但它不是根据,它不赞成RFC2109
此外,最新的浏览器也不支持这种逗号分隔的语法。在IE9、Firefox 13和Google Chrome 20上测试
所有这些浏览器都只使用第一个cookie
请参阅下面的示例项目
我想找到一些解决办法
我希望有两个不同的Set Cookie头
我试着写一些MessageInspector来重写HTTP头。我找不到如何访问该标题
有什么想法吗
p.S.使用的技术:Web API根据codeplex()上的回答,此问题为已知问题,与WCF自托管相关,应通过移动到IIS托管来修复 这是标记为的WCF 4问题无法解决
发现另一个结果相同的问题。您可以使用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);
这将在响应中添加多个集cookie头
编辑:另外,您应该添加
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" aspNetCompatibilityEnabled="true"/>
在您的web.config中在codeplex上引发了一个错误。仅供参考,这里有一点禁止在单个标题下使用逗号分隔的Cookie:“源服务器可以在单个响应中包含多个Set-Cookie标题字段……源服务器不应将多个Set-Cookie标题字段折叠到单个标题字段中。”-来自