根据the RFC http://www.w3.org/Protocols/rfc2109/rfc2109,“Cookie”HTTP 标头中的各个 cookie 可以用逗号和分号分隔。但是,ASP.NET 无法正确解析逗号大小写 - 它不会将逗号视为分隔符,而是将其视为值的一部分。
例如如果客户端发送标头Cookie: a=b, c=d
,那么 ASP.NET 应用程序将只看到一个名为“a”且值为“b, c=d”的 cookie。
作为一种特殊情况,当客户端发送多个 Cookie 标头(每个 cookie 一个)而不是将所有 cookie 组合在一个标头中时,也会发生同样的情况。从 HTTP 的角度来看,这是完全有效的,在这种情况下,标头的有效值应该是用逗号分隔的所有实例的值的串联。
有人知道这个问题的解决方法(或者可能是修复程序吗?)?我绝对需要让它发挥作用,因为我无法控制客户。
附:讽刺的是,根据这个线程 https://stackoverflow.com/questions/1136405/handling-a-comma-inside-a-cookie-value-using-nets-c-system-net-cookie,.NET 内置 HTTP 客户端(又名 HttpWebRequest)的行为恰恰相反,也会导致问题。 :-)
众所周知,RFC 2109 和 RFC 2965 都没有描述现实。
你应该看看草案 ietf-httpstate-cookie http://greenbytes.de/tech/webdav/draft-ietf-httpstate-cookie-04.html这是新的 IETF httpstate 工作组的工作产品。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)