如何在HTTP协议中传递cookie ?
当前回答
创建示例脚本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
打开浏览器浏览网址: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
其他回答
除了在其他答案中所写的内容外,Set-Cookie响应头中还传递了与cookie的路径、cookie的最大年龄有关的其他细节,以及它是否安全。例如:
set - cookie: [name =价值;到期日期=][;域=域][;路径=路径][;安全)
然而,在发出下一个HTTP请求时,并不是所有这些细节都由客户端传回服务器。
你也可以在你的cookie的末尾设置HttpOnly标志,以表明你的cookie是HttpOnly的,必须不允许被访问,在脚本中通过javascript代码。这有助于防止会话劫持等攻击。
有关更多信息,请参见RFC 2109。也来看看 Nicholas C. Zakas的文章解释了HTTP cookie。
创建示例脚本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
打开浏览器浏览网址: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
服务器在其响应头中发送以下信息来设置cookie字段。
set - cookie: name =价值
如果有cookie集,则浏览器在其请求头中发送以下内容。
饼干:name =价值
有关更多信息,请参阅Wikipedia上的HTTP Cookie文章。
cookie在请求(客户端->服务器)和响应(服务器->客户端)中作为HTTP报头传递。
推荐文章
- HTTP POST返回错误:417“期望失败。”
- 令牌身份验证vs. cookie
- 如何为其他域设置cookie
- JWT vs cookie用于基于令牌的身份验证
- 什么是HTTP中的“406-不可接受的响应”?
- 最好的轻量级web服务器(只有静态内容)的Windows
- HTTP POST在Java中使用JSON
- 哪些HTTP方法与哪些CRUD方法相匹配?
- 使用HTML形式的PUT方法
- 如何转义哈希字符在URL
- 有没有办法在python中做HTTP PUT
- 我能在服务器端应用程序(PHP、Ruby、Python等)上读取URL的哈希部分吗?
- 什么是http头“X-XSS-Protection”?
- 在nodejs http中body在哪里。得到回应?
- 设置cookie永不过期