HTTP知识普及系列:HTTP首部

  1. HTTP协议的请求和响应报文中必定包含HTTP首部。首部内容为客户端和服务器分别处理请求和响应提供所需要的信息。在请求中,HTTP报文由方法、URI、HTTP版本、HTTP首部字段等部分构成。在响应中,HTTP报文由HTTP版本、状态码(数字和原因短语)、HTTP首部字段3部分构成。
  2. 客户端和服务器端以HTTP协议进行通信的过程中,无论是请求还是响应都会使用首部字段,它能起到传递额外重要信息的作用。首部字段是为了给浏览器和服务器提供报文主体大小、所使用的语言、认证信息等内容。
  3. 当HTTP报文首部中出现了两个或两个以上具有相同首部字段名时会怎么样?这种情况在规范内尚未明确,根据浏览器内部处理逻辑的不同,结果可能并不一致。有些浏览器会优先处理第一次出现的首部字段,而有的则会优先处理最后出现的首部字段。
  4. HTTP四种首部字段类型
    1. 通用首部字段:请求报文和响应报文两方都会使用的首部。
    2. 请求首部字段:从客户端向服务器端发送请求报文时使用的首部。
    3. 响应首部字段:从服务器端向客户端返回响应报文时使用的首部。
    4. 实体首部字段:针对请求报文和响应报文的实体部分使用的首部。
  5. 通用首部字段
    1. Cache-Control:通过指定首部字段Cache-Control的指令,就能操作缓存的工作机制。
    2. Connection:控制不在转发给代理的首部字段;管理持久连接。
    3. Data:表明创建HTTP报文的时间和日期。
    4. Pragma:只用在客户端发送的请求中,所有的中间服务器不返回缓存的资源。
    5. Trailer:事先说明报文主体后记录了哪些首部字段。同样可以用在分块传输编码时。
    6. Transfer-Encoding:规定了传输报文主体时采用的编码方式。
    7. Upgrade:用于检测HTTP协议及其他协议是否可以使用更高的版本进行通信。
    8. Via:为了追踪客户端与服务器之间的请求和响应报文的传输路径。
    9. Warning:通常会告知用户一些与缓存相关的问题的警告。
  6. 请求首部字段:请求首部字段是从客户端往服务器发送请求的报文中所使用的字段,用于补充请求的附加信息、客户端信息、对响应内容相关的优先级等内容。
    1. Accept:该字段可通知服务器,用户代理能够处理的媒体类型及媒体类型的相对优先级。
    2. Accept-Charset:用来通知服务器用户代理支持的字符集及字符集的相对优先顺序,可一次性指定多种字符集。
    3. Accept-Encoding:用来告知服务器用户代理支持的内容编码及内容编码的优先级顺序。
    4. Accept-Language:用来告知服务器用户代理嫩巩固处理的自然语言集(中文或英文等),以及自然语言集的相对优先级。
    5. Authorization:用来告知服务器,用户代理的认证信息。
    6. Expect:客户端使用首部字段Except来告知服务器,期望出现的某种指定行为。
    7. From:用来告知服务器使用用户代理的用户的电子邮件地址。
    8. Host:告知服务器,请求的资源所处的互联网主机名和端口号。Host首部字段在HTTP/1.1规范内是唯一一个必须包含在请求内的首部字段。
    9. If-Match:类似于If-xxx这样的请求首部,可以称为条件请求。
    10. If-Modified-Since:告知服务器若该字段值早于资源的更新时间,则希望能处理该请求。
    11. If-None-Match:该字段值得实体标记值与请求资源的ETag不一致时,它就告知服务器处理该请求。
    12. If-Range:它告知服务器若指定的If-Range字段值和请求资源的ETag值或时间相一致时,则作为范围请求处理。反之则返回全体资源。
    13. If-Unmodified-Since:告知服务器,指定的请求资源只有在字段值内指定的日期时间之后,未发生更新的情况下,才能处理请求。
    14. Max-Forwards:通过TRACE方法或OPTIONS方法,发送包含首部字段Max-Forwards的请求时,该字段以十进制整数形式指定可经过的服务器最大数目。当服务器接收到Max-Forwards值为0的请求时,则不再进行转发,而是直接返回响应。
    15. Proxy-Authorization:客户端会发送包含首部字段Proxy-Authorization的请求,以告知服务器认证所需要的信息。
    16. Range:告知服务器资源的指定范围。
    17. TE:告知服务器客户端能够处理响应的传输编码方式及相对优先级。
    18. User-Agent:将创建请求的浏览器用户代理名称等信息传达给服务器。
  7. 响应首部字段:响应首部字段是由服务器端向客户端返回响应报文中所使用的字段,用于补充响应的附加信息、服务器信息、以及对客户端的附加要求等信息。
    1. Accept-Ranges:用来告知客户端服务器是否能够处理范围请求,以指定获取服务器端某个部分的资源。
    2. Age:告知客户端,源服务器在多久前创建了响应。单位秒。
    3. ETag:告知客户端实体标识,它是一种可将资源以字符串形式做唯一标识的方式。
    4. Location:可以将响应接收方引导至某个与请求URI位置不同的资源。
    5. Proxy-Authenticate:把由代理服务器所要求的认证信息发送给客户端。
    6. Retry-After:告知客户端应该在多久之后再次发送请求。
    7. Server:告知客户端当前服务器上安装的HTTP服务器应用程序的信息。
    8. Vary:可对缓存进行控制,源服务器回向代理服务器传达关于本地缓存使用方法的命令。
    9. WWW-Authenticate:用于HTTP访问认证。
  8. 实体首部字段:包含在请求报文和响应报文中的实体部分所使用的首部,用于补充内容的更新时间等与实体相关的信息。
    1. Allow:用于通知客户端能够支持Request-URI指定资源的所有HTTP方法。
    2. Content-Encoding:告知客户端服务器对实体的主体部分选用的内容编码方式。(gzip/compress/deflate/identity)
    3. Content-Language:告知客户端,实体主体使用的自然语言。(中文或英文等语言)
    4. Content-Length:表明了实体主体部分的大小。
    5. Content-Location:给出与报文主体返回资源对应的URI。
    6. Content-MD5:是一串由MD5算法生成的值,其目的在于检查报文主体在传输过程中是否保持完整,以及确认传输到达。
    7. Content-Range:针对范围请求,返回响应时使用的首部字段,能告知客户端作为相应返回的实体的哪个部分符合范围请求。
    8. Content-Type:说明了实体主体内对象的媒体类型,该字段用type/subtype形式赋值。
    9. Expires:会将资源失效的日期告知客户端。
    10. Last-Modified:指明资源最终修改的时间。
  9. 管理服务器与客户端之间状态的Cookie。其工作机制是用户识别以及状态管理。调用Cookie时,由于可校验Cookie的有效期,以及发送方的域、路径、协议等信息。
  10. Set-Cookie字段的几个属性:
    1. expires属性:指定浏览器可发送Cookie的有效期。
    2. path属性:可用于限制指定Cookie的发送范围的文件目录。
    3. domain属性:指定的域名。
    4. secure属性:用于限制Web页面仅在HTTPS安全连接时才可以发送Cookie。
    5. HTTPOnly:Cookie的扩展功能,它使JavaScript脚本无法获得Cookie。其主要目的是为了防止跨站脚本攻击对Cookie的信息窃取。
时间: 2024-08-29 03:08:58

HTTP知识普及系列:HTTP首部的相关文章

HTTP知识普及系列:HTTP报文内的HTTP信息

HTTP报文是用于HTTP协议交互的信息. 请求报文和响应报文的结构: 请求行 状态行 首部字段 通用首部 请求首部 响应首部 实体首部 其他 常用内容编码的几种方式 gzip(GNU zip) compress (UNIX系统的标准压缩) deflate (zlib) identity (不进行编码) 把实体主体分块的功能成为分块传输编码,每一块都会用十六进制来标记块的大小,实体主体的最后一块会使用“0(CR+LF)” 获取部分内容的范围请求,要实现该功能需要指定下载的实体范围.如果服务器无法

HTTP知识普及系列:简单的HTTP协议

请求报文是由请求方法.请求URI.协议版本.可选的请求首部字段和内容实体构成的. 响应报文基本上由协议版本.状态码.用以解释状态码的原因短语.可选的相应首部字段以及实体主体构成. HTTP是一种不保存状态,即无状态协议. 告知服务器意图的HTTP方法 GET方法用来请求访问已被URI识别的资源: POST方法用来传输实体的主体: PUT方法用来传输文件: HEAD方法和GET方法一样,只是不返回报文主体部分: DELETE方法用来删除文件: OPTIONS方法用来查询针对请求URI指定的资源支持

HTTP知识普及系列:Web攻击技术

HTTP协议本身并不存在安全性问题,应用HTTP协议的服务器和客户端以及运行在服务器上的Web应用等资源才是攻击的目标. Web网站使几乎都用会话管理.加密处理等安全性方面的功能.而HTTP协议本身不具备这些功能. 在HTTP请求报文内加载攻击代码能对Web应用发起攻击. 针对Web的攻击模式 主动攻击是指攻击者通过直接访问应用,把攻击代码传入的攻击模式. 被动攻击是指利用全套策略执行攻击代码的攻击模式. 实施Web应用的安全策略可大致分为以下两部分. 客户端验证 Web应用端(服务器端)验证

HTTP知识普及系列:基于HTTP的功能追加协议

SPDY的开发目标旨在解决HTTP的性能瓶颈,缩短Web页面的加载时间. HTTP的瓶颈 一条连接上只可发送一个请求. 请求只能从客户端开始.客户端不可以接收除响应以外的指令. 请求/响应未经压缩就发送.首部信息越多延迟就越大. 发送冗长的首部.每次互相发送相同的首部造成浪费较多. 可任意选择数据压缩格式.非强制压缩发送. Ajax是一种有效利用JavaScript和DOM的操作,以达到局部Web页面替换加载的异步通信手段.(异步加载) Comet,一旦服务器端有内容更新了,Comet不会让请求

HTTP知识普及系列:确保Web安全的HTTPS

HTTP的缺点 通信使用明文(不加密),内容可能会被窃听 不验证通信方的身份,因此有可能遭遇伪装 任何人都可发起请求 查明对手证书 无法证明报文的完整性,所以有可能已遭篡改 接收到的内容可能有误 用MD5和SHA-1等散列值校验的放阿飞,以及用来确认文件的数字签名方法 HTTPS是指HTTP与SSL组合使用. HTTP+加密+认证+完整性保护=HTTPS HTTPS并非是应用层的一种新协议,知识HTTP通信接口部分用SSL和TLS协议代替而已. SSL是当今世界上应用最广泛的网络安全技术. SS

HTTP知识普及系列:与HTTP协作的Web服务器

HTTP/1.1规范允许一台HTTP服务器搭建多个Web站点. 相同IP地址下,由于虚拟主机可以寄存多个不同主机名和域名的Web网站,因此在发送HTTP请求时,必须在Host首部内完整指定主机或域名的URL HTTP通信时,除客户端和服务器以外,还有一些用于通信数据转发的应用程序,例如代理.网关和隧道. 代理是一种转发功能的应用程序,它扮演了位于服务端和客户端“中间人”的角色. 网关是转发其他服务器通信数据的服务器. 隧道是在相隔甚远的客户端和服务器两者之间进行中转,并保持双方通信连接的应用程序

HTTP知识普及系列:Web及网络基础

根据web浏览器地址栏中指定的URL,Web浏览器从Web服务器端获取文件资源等信息,从而显示出Web页面. Web使用一种名为HTTP(超文本传输协议)的协议作为规范,完成从客户端到服务器端等一系列运作流程.而协议是指规则的约定. WWW(world wide web)万维网. 3项WWW构建技术: 把SGML(标准通用标记语言)作为页面的文本标记语言的HTML: 作为文档传递协议的HTTP: 指定文档所在地址的URL. 目前主流的HTTP协议版本是1997年1月公布的HTTP/1.1. TC

HTTP知识普及系列:HTTP返回状态码

状态码 1XX 信息性状态码 接受的请求正在处理 2XX 成功状态码 请求正常处理完毕 3XX 重定向状态码 需要进行附加操作以完成请求 4XX 客户端错误状态码 服务器无法处理请求 5XX 服务器端错误状态码 服务器处理请求出错 2XX 相应结果表明请求被正常处理了 200 OK 表示从客户端发来的请求在服务器端被正常处理了: 204 No Content 该状态码代表服务器接收的请求已成功处理,但在返回的响应报文中不含实体的主体部分.也不允许返回任何实体的主体. 206 Partial Co

HTTP知识普及系列:构建Web内容的技术

HTTP是为了发送Web上的超文本而开发的标记语言. CSS 层叠样式表,可以指定如何展现HTML内的各种元素,属于样式表标准之一. 动态HTML是指使用客户端脚本语言将静态的HTML内容变成动态的技术的总称. 动态HTML技术是通过调用客户端脚本语言JavaScrpit,实现对HTML的Web页面动态改造. DOM是一操作HTML文档和XML文档的API. CGI是指Web服务器在接收到客户端发送过来的请求后转发给程序的一组机制. Servlet是一种能在服务器上创建动态内容的程序,其运行在与