如何在HTTP协议中传递cookie ?

如何在HTTP协议中传递cookie ?

274409 次浏览

cookie在请求(客户端->服务器)和响应(服务器->客户端)中作为HTTP报头传递。

服务器在其响应头中发送以下信息来设置cookie字段。

Set-Cookie:的名字=价值

如果有cookie集,则浏览器在其请求头中发送以下内容。

Cookie:的名字=价值

有关更多信息,请参阅Wikipedia上的HTTP Cookie文章。

除了在其他答案中所写的内容外,Set-Cookie响应头中还传递了与cookie的路径、cookie的最大年龄有关的其他细节,以及它是否安全。例如:

Set-Cookie:的名字=价值 [; expires=日期] [; domain=] [; path==0] [; secure]


然而,在发出下一个HTTP请求时,并不是所有这些细节都由客户端传回服务器。

你也可以在你的cookie的末尾设置HttpOnly标志,以表明你的cookie是httponly的,必须不允许被访问,在脚本中通过javascript代码。这有助于防止会话劫持等攻击。

更多信息,请参见RFC 2109。也来看看 Nicholas C. Zakas的文章,HTTP cookies解释 . /em> . /em> . /em> . /em> . /em>.

创建示例脚本resp:

#!/bin/bash


http_code=200
mime=text/html


echo -e "HTTP/1.1 $http_code OK\r"
echo "Content-type: $mime"
echo "Set-Cookie: name=F"
echo

然后让它可执行,像这样执行。

./resp | nc -l 12346

打开浏览器浏览URL: http://localhost:12346 你会看到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