http报文和协议首部
http报文
???3》报文格式 ????????request 报文 ???????????<method> <request-URL> <version> ???????????<headers> ???????????<entity-body> ???????response 报文 ???????????<version> <status> <reason-phrase> ???????????<headers> ???????????<entity-body> ???4》method:请求方法,标明客户端希望服务器对资源执行的动作。 ???????GET :从服务器获取一个资源 ???????HEAD :只从服务器获取文档的响应首部 ???????POST :向服务器输入数据,通常会再由网关程序继续处理 ???????PUT :将请求的主体部分存储在服务器中,如上传文件 ???????DELETE :请求删除服务器上指定的文档 ???????TRACE :追踪请求到达服务器中间经过的代理服务器 ???????OPTIONS :请求服务器返回对指定资源支持使用的请求方法 ???5》version: ???????HTTP/<major>.<minor> ???6》status: ???????三位数字,标记请求处理过程中发生的情况。 ???????????1xx :100-101 信息提示 ???????????2xx :200-206 成功 ???????????3xx :300-305 重定向 ???????????4xx :400-415 错误类信息,客户端错误 ???????????5xx :500-505 错误类信息,服务器端错误 ???????常用状态码 ???????????200:成功,请求数据通过响应报文的entity-body 部分发送;OK ???????????301:请求的URL 指向的资源已经被删除;但在响应报文中通过首部Location 指明了资源现在所处的新位置;Moved Permanently ???????????302:响应报文Location置 指明资源临时新位置 Moved Temporarily ???????????304:客户端发出了条件式请求,但服务器上的资源未曾发生改变,则通过响应此响应状态码通知客户端;Not Modified ???????????401:需要输入账号和密码认证方能访问资源;Unauthorized ???????????403:请求被禁止;Forbidden ???????????404:服务器无法找到客户端请求的资源;Not Found ???????????500:服务器内部错误;Internal Server Error ???????????501: ???????????502:代理服务器从后端服务器收到了一条伪响应,如无法连接到网关;Bad Gateway ???????????503:服务不可用,临时服务器维护或过载,服务器无法处理请求 ???????????504:网关超时 ???????????????????????????7》reason-phrase: ????????状态码所标记的状态的简要描述 ???8》headers:每个请求或响应报文可包含任意个首部;每个首部都有首部名称,后面跟一个冒号,而后跟一个可选空格,接着是一个值。 ???9》entity-body;请求时附加的数据或响应时附加的数据。
http协议首部
???1》首部的分类: ???????通用首部 ???????请求首部 ???????响应首部 ???????实体首部 ???????扩展首部 ???2》通用首部: ???????Date:报文的创建时间 ???????Connection:连接状态,如keep-alive, close ???????Via:显示报文经过的中间节点(代理,网关) ???????Cache-Control:控制缓存,如缓存时长 ???????MIME-Version: 发送端使用的MIME ???3》请求首部: ???????Accept:通知服务器自己可接受的媒体类型 ???????Accept-Charset: 客户端可接受的字符集 ???????Accept-Encoding:客户端可接受编码格式,如gzip ???????Accept-Language:客户端可 接受的语言 ???????Client-IP: ?请求的客户端IP ???????Host: ?请求的服务器名称和端口号 ???????Referer:跳转至当前URI 的前一个URL ???????User-Agent:客户端代理,浏览器版本 ???????1。条件式请求首部: ???????????Expect:允许客户端列出某请求所要求的服务器行为 ???????????If-Modified-Since :自从指定的时间之后,请求的资源是否发生过修改 ???????????If-Unmodified-Since :与上面相反 ???????????If-None-Match :本地缓存中存储的文档的ETag 标签是否与服务器文档的Etag 不匹配 ???????????If-Match :与上面相反 ???????2。安全请求首部: ???????????Authorization:向服务器发送认证信息,如账号和密码 ???????????Cookie:客户端向服务器发送cookie ???????????Cookie2:用于说明请求端支持的cookie 版本 ???????3。代理请求首部: ???????????Proxy-Authorization: 向代理服务器认证 ???4》响应首部: ???????信息性: ???????????Age :从最初创建开始,响应持续时长 ???????????Server :服务器程序软件名称和版本 ???????协商首部:某资源有多种表示方法时使用 ???????????Accept-Ranges :服务器可接受的请求范围类型 ???????????Vary :服务器查看的其它首部列表 ???????安全响应首部: ???????????Set-Cookie :向客户端设置cookie ???????????????Set-Cookie2: ?以上面相似 ???????????WWW-Authenticate:来自服务器对客户端的质询列表 ???5》实体首部: ???????Allow: ?列出对此资源实体可使用的请求方法 ???????Location :告诉客户端真正的实体位于何处 ???????Content-Encoding: 对主体执行的编码 ???????Content-Language: 理解主体时最适合的语言 ???????Content-Length: ?主体的长度 ???????Content-Location: ?实体真正所处位置 ???????Content-Type :主体的对象类型,如text ???????缓存相关: ???????????ETag :实体的扩展标签 ???????????Expires :实体的过期时间 ???????????Last-Modified :最后一次修改的时间 ???????6)mod_deflate 模块 ???????使用mod_deflate 模块压缩页面优化传输速度 ???????适用场景: ???????????(1) ?节约带宽,额外消耗CPU ;同时,可能有些较老浏览器不支持 ???????????(2) ?压缩适于压缩的资源,例如文本文件 ???????????LoadModule deflate_module modules/mod_deflate.so ???????????#mod_deflate configuration ???????????????SetOutputFilter DEFLATE ???????????# Restrict compression to these MIME types ???????????????AddOutputFilterByType DEFLATE text/plain ???????????????AddOutputFilterByType DEFLATE text/html ???????????????AddOutputFilterByType DEFLATE application/xhtml+xml ???????????????AddOutputFilterByType DEFLATE text/xml ???????????????AddOutputFilterByType DEFLATE application/xml ???????????????AddOutputFilterByType DEFLATE application/x-javascript ???????????????AddOutputFilterByType DEFLATE text/javascript ???????????????AddOutputFilterByType DEFLATE text/css ???????????# Level of compression (Highest 9 - Lowest 1) ???????????????DeflateCompressionLevel 9 ???????????????????????排除特定旧版本的浏览器,不支持压缩 ???????????#Netscape 4.x ?只压缩text/html ???????????????BrowserMatch ^Mozilla/4 gzip-only-text/html ???????????#Netscape 4.06-08本 三个版本不压缩 ???????????????BrowserMatch ^Mozilla/4\.0[678] no-gzip ???????????#MSIE masquerade as Netscape,but it is fine ???????????????Internet Explorer 标识本身为“Mozilla / 4 ”,但实际上是能够处理请求的压缩。如果用户代理首部匹配字符串“MSIE ”(“B”为单词边界”),就关闭之前定义的限制 ???????????????BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html