【发布时间】:2012-07-17 01:05:30
【问题描述】:
我遇到了一个问题。
当您向响应中添加多个 Set-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,这是一个有效的语法。 但它不是根据RFC6265,它弃用了RFC2109
此外,最新的浏览器也不支持这种逗号分隔的语法。在 IE9、Firefox 13 和 Google Chrome 20 上测试。
所有这些浏览器都只获取第一个 cookie。
请看下面的示例项目
https://github.com/mnaoumov/cookie-bug/
我想找到一些解决方法。
我希望有两个不同的 Set-Cookie 标头。
我尝试编写一些 MessageInspector 来重写 HTTP 标头。我找不到如何访问该标题。
有什么想法吗?
附:使用的技术:Web API
【问题讨论】:
-
在 codeplex 上提出了一个错误。 aspnetwebstack.codeplex.com/workitem/288
-
仅供参考,这里是禁止在单个标头下使用逗号分隔 cookie 的位:“源服务器可以在单个响应中包含多个 Set-Cookie 标头字段。...... 源服务器不应该折叠多个 Set-Cookie 标头字段合并为一个标头字段。" - 来自RFC 6265 - HTTP State Management Mechanism (overview section)
标签: web asp.net-web-api cookies