根据RFC,“Cookie”HTTP 标头中的各个 cookie 可以用逗号和分号分隔。但是,ASP.NET 不会正确解析逗号大小写 - 它不会将逗号视为分隔符,而是将其视为值的一部分。
例如,
如果客户端发送 header Cookie: a=b, c=d
,那么 ASP.NET 应用程序将只看到一个名为“a”的 cookie,其值为“b, c=d”。
作为一种特殊情况,当客户端发送多个 Cookie 标头(每个 cookie 一个)而不是将所有 Cookie 组合在一个标头中时,也会发生同样的事情。从 HTTP 的角度来看,这是完全有效的,在这种情况下,标头的有效值应该是由逗号分隔的所有实例的值的串联。
有人知道解决方法(或者可能是修复?)吗?我绝对需要让这个工作,因为我不控制客户端。
PS 具有讽刺意味的是,根据这个线程,.NET 内置 HTTP 客户端(又名 HttpWebRequest)的行为正好相反,也会导致问题。:-)