如何在HTTP协议中传递Cookie?
答案 0 :(得分:269)
服务器在其响应标头中发送以下内容以设置cookie字段。
Set-Cookie:
名称 =
值
如果设置了cookie,则浏览器会在其请求标头中发送以下内容。
Cookie:
名称 =
值
有关详情,请参阅维基百科上的HTTP Cookie文章。
答案 1 :(得分:29)
Cookie在请求(客户端 - >服务器)和响应(服务器 - >客户端)中作为HTTP标头传递。
答案 2 :(得分:26)
除了在其他答案中写的内容之外,其他与cookie的路径,cookie的最大年龄,是否安全的细节也在Set-Cookie响应头中传递。例如:
Set-Cookie:
名称 =
值 [; expires=
日期] [; domain=
域] [; path=
路径] [; secure
]
但是,在发出下一个HTTP请求时,并非所有这些细节都会由客户端传回服务器。
您还可以在Cookie的末尾设置HttpOnly
标记,以便通过javascript代码在脚本中指示您的cookie是httponly且不允许访问。这有助于防止会话劫持等攻击。
有关详细信息,请参阅RFC 2109。另外看看 Nicholas C. Zakas的文章HTTP cookies explained。
答案 3 :(得分:14)
创建示例脚本为resp:
#!/bin/bash
http_code=200
mime=text/html
echo -e "HTTP/1.1 $http_code OK\r"
echo "Content-type: $mime"
echo
echo "Set-Cookie: name=F"
然后制作可执行文件并执行这样的操作。
./resp | nc -l -p 12346
打开浏览器并浏览网址:http://localhost:1236 您将看到浏览器发送的Cookie值
[aaa@bbbbbbbb ]$ ./resp | nc -l -p 12346 GET / HTTP/1.1 Host: xxx.xxx.xxx.xxx:12346 Connection: keep-alive Cache-Control: max-age=0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.112 Safari/537.36 Accept-Encoding: gzip, deflate, sdch Accept-Language: en-US,en;q=0.8,ru;q=0.6 Cookie: name=F