如何在HTTP协议中传递cookie?

时间:2010-08-12 11:27:25

标签: http cookies

如何在HTTP协议中传递Cookie?

4 个答案:

答案 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