http首部字段详解与cookie

HTTP

  • HTTP报文首部
    • 1.General 通用首部
    • 2.响应头部
    • 3.请求头部
    • 4. Cache-control(缓存设置)
    • 5.Cookie
      • 为cookie服务的首部字段:
      • 1、 Set-Cookie字段的属性:
        • 1)expires
        • 2)path
        • 3)domain
        • 4)secure
        • 5)HttpCookie
      • 2、Cookie

HTTP报文首部

包括 通用首部,请求首部,响应首部,实体首部。

HTTP首部有很多字段,常见就那么几个,有些可能几年都难得一见,用到最多的应该就是Cookie了,这里介绍HTTP首部后会重点了解一下贯穿在HTTP 请求响应报文的首部信息中的Cookie

1.General 通用首部

平时我们代码调试,打开控制台Network,经常关注的是General通用首部,引用百度

Request URL: https://www.baidu.com/s?wd=http首部Remote Address&rsv_spt=1&rsv_iqid=0xdb494363000053bc&issp=1&f=8&rsv_bp=1&rsv_idx=2&ie=utf-8&rqlang=cn&tn=baiduhome_pg&rsv_enter=1&oq=http%E9%A6%96%E9%83%A8general&rsv_t=8c0f0InzKuFv4lnsBI6%2FBEfvq4guX%2BJg3WGDkeUa0U5Vsi%2BlLIOryklVsH%2BMBMw9BhuT&rsv_pq=a536dca2000051c8&inputT=48418&rsv_sug3=44&rsv_sug1=33&rsv_sug7=000&bs=http首部general
Request Method: GET
Status Code: 200 OK
Remote Address: 183.232.231.173:443
Referrer Policy: no-referrer-when-downgrade

字段 说明
Request URL 请求的域名
Request Method 请求方式
Status Code 返回的状态码
Remote Address 请求的远程地址
Referrer Policy 来源协议

2.响应头部

Bdpagetype: 3
Bdqid: 0xcbd8f227000004cb
Cache-Control: private
Ckpacknum: 2
Ckrndstr: 7000004cb
Connection: Keep-Alive
Content-Encoding: compress;q=0.5, gzip;q=1.0
Content-Type: text/html;charset=utf-8
Content-Security-Policy: upgrade-insecure-requests
Date: Wed, 14 Nov 2018 16:31:38 GMT
P3p: CP=" OTI DSP COR IVA OUR IND COM "
Server: BWS/1.1
Set-Cookie: BDRCVFR[feWj1Vr5u3D]=mk3SLVN4HKm; path=/; domain=.baidu.com
Set-Cookie: delPer=0; path=/; domain=.baidu.com
Set-Cookie: BD_CK_SAM=1;path=/
Set-Cookie: PSINO=7; domain=.baidu.com; path=/
Set-Cookie: BDSVRTM=25; path=/
Set-Cookie: H_PS_PSSID=1449_21098_27401_26350_27508; path=/; domain=.baidu.com
Strict-Transport-Security: max-age=172800
Transfer-Encoding: chunked
Vary: User-Agent

字段 说明
Cache-Control 浏览器缓存设置
Connection 连接方式(keep-alive:保持持久连接)
Content-Encoding 数据传输支持的编码类型(q值大的优先级大;*表示支持全部)
Content-Type 数据的类型(决定浏览器将以什么形式、什么编码读取这个文件)
Content-Security-Policy 允许站点管理者在指定的页面控制用户代理的资源。除了少数例外,这条政策将极大地指定服务源 以及脚本端点。这将帮助防止跨站脚本攻击(Cross-Site Script) (XSS);指令upgrade-insecure-requests与请求头对应,使客户端在https的页面需要加载http的资源时,自动升级到https
Strict-Transport-Security 一个安全功能,它告诉浏览器只能通过HTTPS访问当前资源,而不是HTTP,max-age设置的是时间
P3p 浏览器会依据设置,决定在第三方请求的条件下是否接受网站的 cookie。解决低版本 IE 跨域不接受第三方 cookie的问题
Transfer-Encoding 数据传输的方式
Vary 指令User-Agent,例如你提供给移动端的内容是不同的,可用防止你客户端误使用了用于桌面端的缓存。 并可帮助搜索引擎来发现你的移动端版本的页面。
Set-Cookie 开始状态管理所使用的Cookie信息
ETag 告知客户端实体标识,是一种可将资源以字符串形式做唯一标识的方式,值有强弱之分
Location 与redirection配合使用,重定向

3.请求头部

Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,/;q=0.8
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Cache-Control: max-age=0
Connection: keep-alive
Cookie: BAIDUID=04C4C53E2B16060A32FCCB91C9EF6FF3:FG=1; BIDUPSID=04C4C53E2B16060A32FCCB91C9EF6FF3; PSTM=1541052389; BD_UPN=123253; H_PS_PSSID=1449_21098_27401_26350_27508; BDUSS=ZpTDFGWGt5WVUzcmtCZFlOZ3VicmhGM214ck5pQUV6YWYxMGNsTG9CbG1PUUpjQVFBQUFBJCQAAAAAAAAAAAEAAAAnV7g%7EaGVsbGVuX3pob3VfaHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGas2ltmrNpbVU; H_WISE_SIDS=126124_125819_114550_125728_120210_123019_122155_118883_118863_118853_118834_118805_126166_107319_126995_126865_126143_126797_126558_117334_126792_117429_126783_126442_124626_126381_126163_125926_126684_126774_125488_126722_126091_123920_125873_126963_124030_126435_110085_124866_123289_126504_126620; lsv=globalTjs_7a56b8a-wwwTcss_148f374-wwwBcss_480c272-framejs_fb08e1e-globalBjs_bf261bb-sugjs_3ac2fc6-wwwjs_892359f; MSA_WH=654_799; BDORZ=B490B5EBF6F3CD402E515D22BCDA1598; ispeed_lsm=2; delPer=0; BD_CK_SAM=1; PSINO=7; H_PS_645EC=5e97EhBkE6o7SQDPSzt%2BCX1nY0EuxfgHq5rNl%2B8nwn2nppdFOQtUHPEd3tJScMBkO9%2Fw; BDSVRTM=0
Host: www.baidu.com
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36

字段 说明
Cache-Control 浏览器缓存设置
Connection 连接方式(keep-alive:保持持久连接)
Accept 浏览器接收支持的媒体类型
Accept-Encoding 浏览器接收支持的编码类型(q值大的优先级大;*表示支持全部)
Accept-Language 浏览器接收支持的语言
Upgrade-Insecure-Requests: 1 向服务器端发送信号,表示客户端优先选择加密及带有身份验证的响应
Cookie 开始状态管理所使用的Cookie信息
Host 请求资源所在服务器
User-Agent 包含了一个特征字符串,用来让网络协议的对端来识别发起请求的用户代理软件的应用类型、操作系统、软件开发商以及版本号
if-Match 条件请求,判断实体ETag与资源的ETag是否一致,满足条件–>执行请求
if-None-Match 与上相反
Range 只需获取部分资源的范围请求,匹配,返回范围内资源,code=206,否则,返回全部资源,code=200

4. Cache-control(缓存设置)

指令 说明
public 所有内容都将被缓存(客户端和代理服务器都可缓存)
private 内容只缓存到私有缓存中(仅客户端可以缓存,代理服务器不可缓存)
no-cache 必须先与服务器确认返回的响应是否被更改,然后才能使用该响应来满足后续对同一个网址的请求。因此,如果存在合适的验证令牌 (ETag),no-cache 会发起往返通信来验证缓存的响应,如果资源未被更改,可以避免下载。
no-store 所有内容都不会被缓存到缓存或 Internet 临时文件中
must-revalidation/proxy-revalidation 如果缓存的内容失效,请求必须发送到服务器/代理以进行重新验证
max-age=xxx (xxx is numeric) 缓存的内容将在 xxx 秒后失效, 这个选项只在HTTP 1.1可用, 并如果和Last-Modified一起使用时, 优先级较高

对 cache-directive 值的浏览器响应(这个属性是处理跨浏览器缓存问题的最有效的方法。)

Cache-directive 打开一个新的浏览器窗口 在原窗口中单击 Enter 按钮 刷新 单击 Back 按钮
public 浏览器呈现来自缓存的页面 器呈现来自缓存的页面 浏览器重新发送请求到服务器 浏览器呈现来自缓存的页面
private 浏览器重新发送请求到服务器 第一次,浏览器重新发送请求到服务器;此后,浏览器呈现来自缓存的页面 浏览器重新发送请求到服务器 浏览器呈现来自缓存的页面
no-cache/no-store 浏览器重新发送请求到服务器 浏览器重新发送请求到服务器 浏览器重新发送请求到服务器 浏览器重新发送请求到服务器
must-revalidation/proxy-revalidation 浏览器重新发送请求到服务器 第一次,浏览器重新发送请求到服务器;此后,浏览器呈现来自缓存的页面 浏览器重新发送请求到服务器 浏览器呈现来自缓存的页面
max-age=xxx (xxx is numeric) 在 xxx 秒后,浏览器重新发送请求到服务器 在 xxx 秒后,浏览器重新发送请求到服务器 浏览器重新发送请求到服务器 在 xxx 秒后,浏览器重新发送请求到服务器

5.Cookie

为cookie服务的首部字段:

在这里插入图片描述

1、 Set-Cookie字段的属性:

http首部字段详解与cookie_第1张图片

1)expires

指定浏览器可发送Cookie的有效期

若不指定则默认为会话时间段内,一旦Cookie从服务端发送到客户端,服务器就不存在可显式删除Cookie的方法,但可通过覆盖已过期的Cookie,实现对客户端的实质性删除

2)path

用于限制指定Cookie发送范围的文件目录

3)domain

通过该属性指定的域名可做到与结尾匹配一致

除了针对具体指定的多个域名发送的Cookie外,不指定domain属性显得更安全

4)secure

限制web界面仅在HTTPS安全连接时,才可以发送Cookie

发送Cookie时,指定属性的方法如下:

Set-Cookie: name=value; secure

5)HttpCookie

Cookie的扩展功能,使JavaScript脚本无法获得Cookie。主要目的是为了防止跨站脚本攻击对Cookie的信息窃取

发送指定HttpOnly属性的方法如下:

Set-Cookie: name=value; HttpOnly

2、Cookie

告知服务器,客户端想获得http状态管理支持时,就会在请求中包含从服务器接收到的Cookie。接收多个时,同样可以以多个发送

你可能感兴趣的:(http)