Web前端之路程序员我是程序员;您好程先生;叫我序员就好了

HTTP学习笔记#2

2016-04-26  本文已影响195人  BeckJiang

五、与HTTP协作的web服务器

  1. HTTP/1.1 规范允许一台HTTP服务器搭建多个web站点,即在相同IP地址下,由于虚拟主机可以寄存多个不同主机名和域名的网站。因此发送HTTP请求时,必须在Host首部内完整指定主机名或域名的URI
  2. 通信数据转发程序:

六、HTTP首部

  1. 请求报文首部
  1. 响应报文首部
  1. 首部字段结构
  1. End-to-end 首部和Hop-by-hop 首部
  1. HTTP/1.1通用首部字段
    Cache-Control:操作缓存的工作机制

Connection

Data表示创建HTTP报文的日期和时间,时间格式:Date: Tue, 03 Jul 2012 04:40:59 GMT

Pragma:HTTP/1.1之前版本的历史遗留字段,Pragma: no-cache类似Cache-Control: no-cache

Trailer:说明:Trailer会事先说明报文主体后记录了哪些首部字段。该首部字段可应用在HTTP/1.1版本分块传输编码时。

Transfer-Encoding

Upgrade

Via

Warning

110 Response is stale 代理返回已过期的资源
111 Revalidation failed 代理再验证资源有效性时失败(服务器无法到达等原因)
112 Disconnection operation 代理与互联网连接被故意切断
113 Heuristic expiration 响应的使用期超过24小时
199 Miscellaneous warning 任意的警告内容
214 Transformation applied 代理对内容编码或媒体类型等执行了某些处理时
299 Miscellaneous persistent warning 任意的警告内容

6. 请求首部字段
  **Accept**
  - 告诉服务器,用户代理能够处理的媒体类型及媒体类型的相对优先级。
  - 可使用`type/subtype`这种形式,一次指定多种媒体类型。q代表权重,范围是0~1
`Accept: text/html,application/Xhtml+xml,application/xml;q=0.9,*/*;q=0.8`

  **Accept-Charset**:用来通知服务器用户代理支持的**字符集及字符集的相对优先级**

  **Accept-Encoding**
  - 用来告知服务器用户代理支持的**内容编码及内容编码的优先级顺序**
  - `Accept-Encoding: gzip, deflate`

  **Accept-Language**:告知服务器用户代理能够处理的**自然语言集,以及相对优先级**

  **Authorization**:用来告知服务器,用户代理的认证信息。

  **Except**:告知服务器,期望出现的某种特定行为。

  **From**:告知服务器使用用户代理的用户的电子邮件地址。

  **Host**:告知服务器请求的资源所处的互联网主机名和端口号。

  **If-Match**
  - 只有当If-Match的字段值根ETag值匹配一致时,服务器才会接受请求。反之,返回412状态吗
  - 如果使(\*)指定If-Match的字段值,服务器将会忽略ETag,只要资源存在就处理请求。

  **If-Modified-Since**:如果在If-Modified-Since字段指定的日期时间后,资源发生了更新,服务器会接受请求。

  **If-None-Match**:只有在If-None-Match的字段值与ETag值不一致时,可处理请求。与If-Match首部字段的作用相反。

  **If-Range**:告知服务器若指定的If-Range字段值和请求资源的ETag值或时间一致时,则作为范围请求处理。反之,则返回全体资源。

  **If-Unmodified-Since**:与If-Modified-Since相反。
  **Max-Forwards**:转发数,每次转发值减1.当值变0时,返回响应。
  **Proxy-Authorization**
  - 接收到从代理服务器发来的认证质询时,客户端会发送包含首部字段Proxy-Authorization的请求,以告知服务器认证需要的信息。
  - 注意:认证行为发生在客户端与代理之间。

  **Range**:返回资源的指定范围
  **Referer**:告知服务器请求的原始资源的URL
  **TE**:告知服务器客户端能够处理响应的传输编码方式及相对优先级,与Accept-Encoding功能相似,但是用于传输编码。
  **User-Agent**,告知服务器创建请求的浏览器和用户代理名称等信息。
7. 响应首部字段
  **Accept-Ranges**
  - 告知客户端服务器是否能处理范围请求
  - 可指定的字段值有:可处理范围请求时指定其为bytes,反之则指定其为none。

  **Age**:告知客户端,源服务器在多久前创建了响应。字段值的单位为秒。
  **ETag**:
  - 一种可将资源以字符串形式做唯一标识的方式。
  - 资源更新时,ETag需要更新。
  - 强ETag值,不论实体发生多么细微的变化都会改变其值。`ETag: "usagi-1234"`
  - 弱ETag值,只有资源发生了根本改变,才会改变ETag值。在字段值最开始附加W `ETag: W/"usagi-1234"`

  **Location**:重定向。
  **Proxy-Authenticate**:会把由代理服务器所要求的认证信息发送给客户端。
  **Retry-After**:告诉客户端应该多久之后再次发送请求。
  **Server**:告诉客户端服务器上安装的HTTP服务器应用程序的信息。
  **Vary**:首部字段Vary可对缓存进行控制。当Vary字段值为Accept-Language,那么只有对持相同自然语言的请求返回缓存。
  **WWW-Authenticate**:用于HTTP访问认证。
8. 实体首部字段
  **Allow**:通知客户端能够支持Request-URI指定资源的HTTP方法。
  **Content-Encoding**:
  - 告知客户端服务器对实体的主体部分选用的内容编码方式。内容编码是值在不丢失实体信息的前提下所进行的压缩。
  - 主要采用以下4种内容编码的方式。(gzip、compress、deflate、identity)

  **Content-Language**:告知客户端,实体主体使用的自然语言。
  **Content-Length**:表明实体主体部分的大小,单位是字节。
  **Content-Location**:表示报文主体返回资源对应的URI。
  **Content-MD5**:该字段的值是一串MD5算法生成的值,目的在于检查报文主体在传输过程中是否保持完整。
  **Content-Range**:针对范围的请求,返回响应时使用的首部字段Content-Range,能告知客户端作为响应返回的实体的哪个部分符合范围请求。
  **Content-Type**:说明了实体主体内对象的媒体类型。
  **Expires**:告知客户端资源实效日期,实效前,响应的副本会一直被保存。
  **Last-Modified**:资源最终修改的时间。
9. 为Cookie服务的首部字段
  **Set-Cookie**:开始状态管理所使用的Cookie信息,响应首部字段

NAME=VALUE 赋予Cookie的名称和其值(必需项)。
expires=DATE Cookie的有效期,默认为浏览器关闭前为止。
path=PATH 将服务器上的文件目录作为Cookie的适用对象。
domain=域名 作为Cookie适用对象的域名,可设置domain用于跨域操作。
Secure 仅在HTTPS安全通信时才会发送Cookie。
HttpOnly 加以限制,使Cookie不能被JavaScript脚本访问。

  **Cookie**:服务器接收到的Cookie信息,请求首部字段

Cookie: status=enable

首部字段Cookie会告知服务器,当客户端想要获得HTTP状态管理支持时,就会在请求中包含从服务器接收到的Cookie。

10. 其他首部字段
  **X-Frame-Options**:用于控制网站内在其他Web网站的Frame标签内的显示问题,目的是为了防止点击劫持攻击。有两个值:**DENY**,拒绝;**SAMEORIGIN**,仅同源域名下的页面匹配时许可。
  **X-XSS-Protection**:针对跨站脚本攻击的一种对策。0:将XSS过滤设置成无效状态,1:相反。
  **DNT**:Do Not Track,意为拒绝个人信息被收集,是表示拒绝被精准广告追踪的一种方法。0:同意被追踪,1:拒绝被追踪。
  **P3P**:通过利用P3P(The Platform for Privacy Preferences,在线隐私偏好平台)技术,可以让Web网站上的个人隐私变成一种仅供程序可理解的形式,以达到保护用户隐私的目的。
上一篇下一篇

猜你喜欢

热点阅读