Sie*_*ski 4 cookies redirect get http setcookie
这是我已经研究了一段时间的一个问题。
我有一个重定向似乎不尊重 302 重定向中的 Set-Cookie 属性。
这是我使用wireshark获取的请求和响应标头。
HTTP/1.1 302 Moved Temporarily\r\n
Connection: close\r\n
Location: http://192.168.1.1:8888/home/\r\n
Set-Cookie: foo=test_data; Domain=192.168.1.1; Path=/\r\n
\r\n
GET /home/ HTTP/1.1\r\n
Host: 192.168.1.1:8888\r\n
Connection: keep-alive\r\n
Upgrade-Insecure-Requests: 1\r\n
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36\r\n
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8\r\n
Accept-Encoding: gzip, deflate\r\n
Accept-Language: en-US,en;q=0.8\r\n
DNT: 1\r\n
\r\n
Run Code Online (Sandbox Code Playgroud)
我只是对内容进行了一些消毒,但不应该修改任何重要的内容。关键是无论我使用什么浏览器,cookie 'foo' 都不会放在 302 之后的 GET 请求中。从我读到的内容来看,这不是预期的行为。我相信这一点是错误的吗?302 有什么我遗漏或做错的地方吗?
在问题中,Cookie
标头未出现在重定向的 HTTP 请求 ( GET http://192.168.1.1:8888/home
) 中。根本原因是:cookiefoo=test_data
永远不存在。当它通过Set-Cookie
响应头从服务器传递时,它会被浏览器拒绝,因为它Domain
不包含原始服务器。
根据MDN:
属于不包含源服务器的域的 cookie应该被用户代理拒绝。如果以下 cookie 是由 originalcompany.com 上托管的服务器设置的,则将被拒绝。
设置 Cookie:qwerty=219ffwef9w0f;域=somecompany.co.uk; 路径=/;到期日 = 2019 年 8 月 30 日星期三 00:00:00 GMT
更准确的描述可以查看RFC6265部分-4.1.2.3
这是有充分理由设计的。如果所有服务器都可以Set-Cookie
用于所有域,那么清除其他网站的cookie将非常容易,这对互联网来说将是一场灾难。
归档时间: |
|
查看次数: |
7426 次 |
最近记录: |