Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

HTTP重要请求头 #7

Open
AILINGANGEL opened this issue May 27, 2019 · 1 comment
Open

HTTP重要请求头 #7

AILINGANGEL opened this issue May 27, 2019 · 1 comment

Comments

@AILINGANGEL
Copy link
Owner

AILINGANGEL commented May 27, 2019

date

服务器收到请求之后去获取了资源并且发送给客户端的时间,不是产生或者修改对象的时间

age

消息对象在缓存代理服务器中存储的时长, 以秒为单位

set-cookie

服务器端设置cookie的方式,包括如下信息

  • expires/max-age(有效期)
  • domain(在什么domain下有效,在有子域名的网站中可以设置为顶级域名,那么就可以在各个子域名中共享了)
  • path(在什么路径下有效,默认的只会生成cookie的页面以及同级目录页面或者子目录页面生效,可以设置为/表示在根域名下都有效)
  • secure: https下能发送这个cookie
  • SameSite: 这个cookie是否是同站cookie还是第三方cookie(第三方cookie会引起XSRF攻击),有两个类型的值:strict和lax。strict表明这个cookie只能作为第一方的cookie不能作为第三方cookie,lax是宽松模式表明如果网站上是通过a标签或者window.open打开的并且请求方法是get就可以带上这个cookie
  • httpOnly: 如果设置了httpOnly就表明使用js不能获取到cookie内容

Accept-Encoding

浏览器告诉服务器可以支持的编码是什么

Content-Encoding

服务器告诉浏览器他采用的压缩实体的编码方式是什么,客户端收到请求的实体之后就用这个编码来进行解压缩

Transfer-Encoding

传输实体所使用的编码方式是什么

  • chunked: 如果请求的实体很大或者需要根据数据库动态生成,等待实体准备好需要的时间比较长,因此可以采用分开编码的方式,将实体分块传入给客户端。当返回的content-length为0的时候就表明已经传完了

connection:keep-alive

每一次的http都会进行一次三次握手的tcp连接,设置connection:keep-alive表明建立了一次tcp连接之后不要关闭连接,后面的http请求还是使用这次的tcp连接。但是这个tcp并不是一直保持连接,可以在服务器端设置

x-frame-options

告诉浏览器是否允许页面被嵌入到其他iframe或者frame或者object中。主要用于预防点击劫持攻击

cache-control

  • public: 响应可以被任何对象缓存(包括浏览器,代理服务器)
  • private: 用户可以缓存但是代理服务器不可以缓存
  • no-cache: 在发布缓存副本之前,强制高速缓存将请求提交给原始服务器进行验证
  • must-revalidate: 缓存必须在使用之前验证旧资源的状态,并且不可使用过期资源

DNT(Do Not Track)

表明用户对于网站追踪的偏好,允许用户指定自己是否更注重个人隐私还是定制化内容

X-DNS-Prefetch-Control

控制浏览器的DNS预获取的功能

referer

表示访问的来源信息
一下情况会发送referer字段:

  • 提交表单的时候
  • 加载静态资源的时候(js, css, 图片等)
  • 用户点击网页上的链接

referer的作用

  • 在xsrf攻击中可以判断referer的来源是否是合法的,从而决定请求是否被处理
  • 统计网站流量的贡献
@AILINGANGEL
Copy link
Owner Author

范围请求 vs 分块编码
Transfer-Encoding 首部允许分块编码,这在数据量很大,并且在请求未能完全处理完成之前无法知晓响应的体积大小的情况下非常有用。服务器会直接把数据发送给客户端而无需进行缓冲或确定响应的精确大小——后者会增加延迟。范围请求与分块传输是兼容的,可以单独或搭配使用。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant