Sco*_*ott 28 browser http http-headers
我正在编写一个充当非常基本的HTTP客户端的小类.作为我正在进行的项目的一部分,我正在让它识别cookie.但是,我不清楚当我的客户端收到多个具有相同密钥但设置了不同值的"Set-Cookie"标头时会发生什么.
例如,
Set-Cookie: PHPSESSID=abc; path=/
Set-Cookie: PHPSESSID=def; path=/
Set-Cookie: PHPSESSID=ghi; path=/
Run Code Online (Sandbox Code Playgroud)
其中哪一项应该是PHPSESSID的价值?当您在同一页面上调用session_start()然后调用session_regenerate_id()时,通常会发生这种情况.每个都会设置自己的标题.所有的浏览器似乎都没有这个,但我似乎无法让我的客户选择正确的.
有任何想法吗?!
Sni*_*ves 28
如果用户代理接收到具有相同cookie名称,
域值和路径值的新cookie作为其已存储
的cookie ,则将现有cookie逐出并替换为新cookie.
请注意,服务器可以通过向用户代理发送
带有Expires属性的新cookie 来删除cookie,该属性具有过去的值.
所以我会按顺序处理标题,如果有重复则覆盖它们.所以在你的情况下你只有一个PHPSESSID = ghi.
Bra*_*och 20
RFC 6265规定:
服务器不应该在具有相同cookie名称的同一响应中包含多个Set-Cookie头字段.
因此,如果您的服务使用相同的密钥发送多个Set-Cookie标头,我会非常担心.特别是因为我看到用户代理和代理行为异常 - 有时采用第一个标头的值,有时会重新排列标头.
作为客户端,典型的用户代理行为似乎是采用最后一个头的值.RFC使用此语句暗示了该行为:
如果用户代理接收到具有相同cookie名称,域值和路径值的新cookie作为其已存储的cookie,则将现有cookie逐出并替换为新cookie.
| 归档时间: |
|
| 查看次数: |
27008 次 |
| 最近记录: |