1.general

**Request URL**: http://xxxx/login   请求地址
**Request Method**: POST             请求方式
**Status Code**: 302                 请求状态码
**Remote Address**: xxx:8080         远程地址
**Referrer Policy**: no-referrer-when-downgrade   
**no-referrer-when-downgrade** (默认值)
在没有指定任何策略的情况下用户代理的默认行为。在同等安全级别的情况下,引用页面的地址会被发送(HTTPS->HTTPS),但是在降级的情况下不会被发送 (HTTPS->HTTP)。
**no-referrer**
整个 Referer 首部会被移除。访问来源信息不随着请求一起发送

2.response header

Cache-Control: no-cache, no-store, max-age=0, must-revalidate

no-cache: 告诉浏览器、缓存服务器,不管本地副本是否过期,使用资源副本前,一定要到源服务器进行副本有效性校验。
html设置Cache-Control:no-cache/ no-store来禁止页面缓存
max-age=5(表示当访问此网页后的5秒内再次访问不会去服务器)
max-age=0表示不管response怎么设置,在重新获取资源之前,先检验ETag/Last-Modified
must-revalidate:告诉浏览器、缓存服务器,本地副本过期前,可以使用本地副本;本地副本一旦过期,必须去源服务器进行有效性校验。
**Content-Length**: 0      设置请求体的字节长度
**Expires**: 0    表示立即过期

在WEB程序设计中,有时为了防止重复的提交或者严格的次序等,必须让用户的数据立即在使用后就过期,当用户后退时就显示过期而不能继续使用。也算是为安全考虑的吧。一般,response.expires写在页面的最上端,后面跟的是一个时间,就是过期的时间,0表示立即过期。

**Pragma: no-cache** 防止页面被缓存

防止从缓存中返回过去的资源,请求中如包含该命令,表示客户端不会接收缓存过的响应,必须向源放武器转发请求如果响应中包含该命令,那么缓存服务器不能对其资源进行缓存,且源服务器也将不在对缓存服务器请求中提出的资源有效性进行确认,且禁止其对相应资源进行缓存操作

**Set-Cookie: JSESSIONID=0A0A89F47F40F085471A1E1BDEF0F12F; 
Path=/msbd-upms; HttpOnly**

第一次访问服务器的时候,会在响应头里面看到Set-Cookie信息(只有在首次访问服务器的时候才会在响应头中出现该信息)
浏览器会根据响应头的set-cookie信息设置浏览器的cookie并保存之
注意此cookie由于没有设置cookie有效日期,所以在关闭浏览器的情况下会丢失掉这个cookie
当再次请求的时候(非首次请求),浏览器会在请求头里将cookie发送给服务器(每次请求都是这样)

Path=/msbd-upms 是 tomcat/conf/server.xml 中设置的路径

HttpOnly
如果cookie中设置了HttpOnly属性,那么通过js脚本将无法读取到cookie信息,这样能有效的防止XSS攻击,窃取cookie内容,这样就增加了cookie的安全性,即便是这样,也不要将重要信息存入cookie。

X-Content-Type-Options: nosniff
对 script 和 styleSheet 在执行是通过MIME 类型来过滤掉不安全的文件

X-XSS-Protection有四种语法:

X-XSS-Protection : 0   表示禁用 XSS 过滤这个功能
    X-XSS-Protection : 1   1 表示启用 XSS 过滤
    一般浏览器中都是默认开启。如果检测到跨站脚本攻击,浏览器将清除在页面上检测到的不安全的部分
    X-XSS-Protection : 1; mode=block   表示启用XSS过滤器
    如果检测到攻击,浏览器不会像上面的选项一样将不安全的部分删除,而是直接阻止整个页面的加载
    X-XSS-Protection : 1; report=<reporting-uri>   表示启用 XSS 过滤
    如果检测到跨站脚本攻击,浏览器会清除在页面上检测到的不安全的部分,
    并使用report-uri的功能 POST 一个 XSS 警报。
    这个功能只有在 Chrome 中有效果,在 IE 中无效。

3.request header

Accept 设置接受的内容类型

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3

Accept-Charset 设置接受的字符编码
Accept-Datetime 设置接受的版本时间
Authorization 设置HTTP身份验证的凭证

Accept-Encoding 设置接受的编码格式

Accept-Encoding: gzip, deflate

Accept-Language 设置接受的语言

Accept-Language: zh-CN,zh;q=0.9

Cache-Control 设置请求响应链上所有的缓存机制必须遵守的指令

Cache-Control: max-age=0

Connection 设置当前连接和hop-by-hop协议请求字段列表的控制选项

Connection: keep-alive
Connection: Upgrade

Content-Length 设置请求体的字节长度

Content-Length: 85

Content-MD5 设置基于MD5算法对请求体内容进行Base64二进制编码

Content-Type 设置请求体的MIME类型(适用POST和PUT请求)

Content-Type: application/x-www-form-urlencoded

Host 设置服务器域名和TCP端口号,如果使用的是服务请求标准端口号,端口号可以省略
Origin 标识跨域资源请求(请求服务端设置Access-Control-Allow-Origin响应字段)

User-Agent会告诉网站服务器,访问者是通过什么工具来请求的,如果是爬虫请求,一般会拒绝,如果是用户浏览器,就会应答。

Transfer-Encoding: chunked使用,就不必申请一个很大的字节数组了,可以一块一块的输出,更科学,占用资源更少

Cache-Control: no-cache=Location
由服务器返回的响应报文首部字段中,若Cache-Control中对no-cache字段名具体制定参数值,那么客户端在收到这个被指定参数值的首部字段对应的报文后,就不能缓存
换言之,无参数值的首部字段可以使用缓存,只能在响应中制定该参数

参考:

https://www.jianshu.com/p/6e86903d74f7