zoukankan      html  css  js  c++  java
  • 说一下http请求头响应头

    1、什么是 HTTP 请求头/响应头

    1. 请求头

    当你使用http(https)协议请求一个网站的时候,你的浏览器会向对方的服务器发送一个http请求,这个请求同样包含三个部分

    • 请求方法 请求路径(URL) 请求协议版本
    • 报文主体
    • (POST/GET)参数

    这里是一个请求头的示例

    这些讯息里面包含了你的请求方法,你请求的目的地,你的语言,以及你的浏览器的各种信息,这样对方的服务器就能靠着辨识这些讯息来辨识你的浏览器

    2. 响应头

    当你向对方发送请求后,对方会回应你浏览器的请求,返回两个部分:响应头,Body

    • 注:Body就是返回给你的主体,比如说请求网站返回的html

    响应头讯息里包含了服务器的响应讯息,如http版本,压缩方式,响应文件类型,文件编码等

    响应头示例

    2、HTTP 请求头/响应头的详细介绍

    请求头

    Accept: text/html,p_w_picpath/*    浏览器通过这个头,告诉服务器它所支持的数据类型
    Accept-Charset: 浏览器通过这个头,告诉服务器它采用的字符集
    Accept-Encoding:浏览器通过这个头,告诉服务器,它所支持的压缩格式
    Accept-Language:浏览器通过这个头,告诉服务器,它所采用的语言
    Host:浏览器通过这个头,告诉服务器,我想访问服务器哪台主机
    If-Modified-Since:浏览器通过这个头,告诉服务器,它缓存数据时间是多少。
    Referer:浏览器通过这个头,告诉服务器,我是从哪个网页点过来的(防盗链)
    User-Agent: 浏览器通过这个头,告诉服务器,当前浏览器操作系统的信息,以及浏览器的版本号
    Connection : 表示是否需要持久连接。如果web服务器端看到这里的值为“Keep-Alive”,或者看到请求使用的是HTTP 1.1(HTTP 1.1默认进行持久连接),它就可以利用持久连接的优点,当页面包含多个元素时(例如Applet,图片),显著地减少下载所需要的时间。要实现这一点, web服务器需要在返回给客户端HTTP头信息中发送一个Content-Length(返回信息正文的长度)头,最简单的实现方法是:先把内容写入ByteArrayOutputStream,然 后在正式写出内容之前计算它的大小。
    
    Connec-Length : 请求头的长度。
    
    Connect-Type : 显示此HTTP请求提交的内容类型。一般只有post提交时才需要设置该属性。
    
    有关Content-Type属性值可以如下两种编码类型:
    
    1. “application/x-www-form-urlencoded”: 表单数据向服务器提交时所采用的编码类型,默认的缺省值就是“application/x-www-form-urlencoded”。
    然而,在向服务器发送大量的文本、包含非ASCII字符的文本或二进制数据时这种编码方式效率很低。
    
    2. “multipart/form-data”: 在文件上载时,所使用的编码类型应当是“multipart/form-data”,它既可以发送文本数据,也支持二进制数据上载。
    
    当提交为单单数据时,可以使用“application/x-www-form-urlencoded”;当提交的是文件时,就需要使用“multipart/form-data”编码类型。
    
    在Content-Type属性当中还是指定提交内容的charset字符编码。一般不进行设置,它只是告诉web服务器post提交的数据采用的何种字符编码。
    
    cookie : 浏览器端cookie。
    
    Hose : 客户端地址
    
    Origin : 目标地址
    
    x-Requested-With : 是否为同步请求 ,如果为XMLHttpRequest,则为 Ajax 异步请求。如果为null则为传统同步请求
    

      

    响应头

    Location:这个头通常配合302状态码使用,它用于告诉浏览器你去找谁。
    Server:告诉浏览器,服务器的类型
    Content-Encoding: 服务器通过这个头,告诉浏览器,回送的数据采用的压缩格式。
    Content-Length: 80  
    Content-Language: zh-cn  
    Content-Type:这个头用于告诉浏览器,回送数据的类型
    Last-Modified:这个头用于告诉浏览器,数据的最后修改时间
    Refresh: :这个头用于控制浏览器定时刷新
    Content-Disposition: 用于通知浏览器,以下载方式打开回送的数据
    Transfer-Encoding: 用于通知浏览器,数据是以分块形式回送的
    ETag: 缓存相头的头
    Expires: 用于说明网页的失效时间,如果该值为一个<0的值,则服务器是通知浏览器不要缓存
    Cache-Control: no-cache  通知浏览器不要缓存
    Refresh: 1;url=http://www.it315.org    隔多少秒以后,让当前页面去访问哪个地址(例如网页登陆成功后,跳回原来的界面,就是用的这个头)
    Content-Disposition: attachment;filename=aaa.zip   和下载相关,通知浏览器以附件的形式下载服务器发送过去的数据
    Transfer-Encoding: chunked  数据传输模式
    Set-Cookie:SS=Q0=5Lb_nQ; path=/search     和cookie相关的头
    ETag: W/"83794-1208174400000"       和cookie相关的头
    Expires: -1        通知浏览器是否缓存当前资源:如果这个头的值是一个以毫秒为单位值,则通知浏览器缓存资源到指定的时间点;如果值是0或-1,则通知浏览器禁止缓存
    Cache-Control: no-cache   通知浏览器是否缓存资源
    Pragma: no-cache         -- 通知浏览器是否缓存资源
    Connection: close/Keep-Alive   是否继续保持连接
    Date: Tue, 11 Jul 2000 18:23:51 GMT    当前响应的时间
    

     参考:http://tools.jb51.net/table/http_header

    3、HTTP请求头/响应头可以拿来干什么

    能干的事情很多,下面就简单列出几个

    • 声明你的文件类型,使用的文件编码
    • 提交POST参数(没错,POST的参数在Header里面)
    • 识别用户使用的语言,以显示不同的页面
    • 通过UA判断用户在使用什么浏览器打开你的网站,比如qq,微信等自带浏览器都通过UA判断出来

    拓展

    1.http响应报文里的 Via 和 X-cache 有什么区别?

    via是http协议里面的一个header,记录了一次http请求所经过的代理和网关,经过1个代理服务器,就添加一个代理服务器的信息,经过2个就添加2个。

    x-cache是squid代理的自定义header,用来记录缓存的命中与否(Squid 是 Linux/Unix 平台下最为流行的高性能免费应用层代理服务器)

  • 相关阅读:
    快速了解微信小程序的使用,一个根据小程序的框架开发的 todos app
    剖析简易计算器带你入门微信小程序开发
    微信第一个“小程序”亮相:不是APP胜似APP!
    hello-weapp 微信小程序最简示例教程
    微信小程序剖析【下】:运行机制
    微信小程序「官方示例代码」浅析【上】
    微信小程序开发:Flex布局
    一个HTML5老兵坦言:我们真的需要“小程序”么?
    迅雷首席架构师刘智聪:微信小程序的架构与系统设计的几点观感
    微信小程序开发:http请求
  • 原文地址:https://www.cnblogs.com/ygunoil/p/15239376.html
Copyright © 2011-2022 走看看