如何在HTTP协议中传递cookie?

如何在HTTP协议中传递cookie?

服务器在响应头中发送以下内容来设置cookie字段。

Set-Cookie: name = value

如果有一个cookie集合,那么浏览器在请求头中发送以下内容。

Cookie: name = value

请参阅Wikipedia上的HTTP Cookie文章以获取更多信息。

在请求(客户端 – >服务器)和响应(服务器 – >客户端)中,Cookie都作为HTTP标头传递。

除了在其他答案中所写的内容之外,其他与Cookiepath,Cookie的最大使用年限有关的详细信息,以及是否安全也在Set-Cookie响应头中传递。 例如:

Set-Cookie: name = value [ ; expires= ; expires= date ] [ ; domain= ; domain= domain ] [ ; path= ; path= path ] [ ; secure ; secure ]


但是,在下一个HTTP请求时,并不是所有这些细节都会被客户端传回给服务器。

您还可以在Cookie的末尾设置HttpOnly标志,以表明您的Cookie是安全的,并且不允许被JavaScript代码脚本访问。 这有助于防止会话劫持等攻击。

有关更多信息,请参阅RFC 2109 。 还可以看看Nicholas C. Zakas的文章, HTTP cookies解释

创build示例脚本为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 

打开浏览器并浏览URL: http:// localhost:1236,您将看到Browser发送的Cookie值

     [aaa @ bbbbbbbb] $ ./resp |  nc -l -p 12346
     GET / HTTP / 1.1
    主机:xxx.xxx.xxx.xxx:12346
    连接:保持活力
     Cache-Control:max-age = 0
    接受:text / html,application / xhtml + xml,application / xml; q = 0.9,image / webp,* / *; q = 0.8
    升级 - 不安全 - 请求:1
     User-Agent:Mozilla / 5.0(Windows NT 6.1)AppleWebKit / 537.36(KHTML,如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