HTTP/HTTPS 「爱情、让人受尽委屈。」 2022-07-13 01:08 195阅读 0赞 **HTTP** HTTP协议的请求和响应报文中必定包含HTTP首部。首部内容为客户端和服务器分别处理请求和响应提供所需要的信息。 在请求中,HTTP报文由方法,URI,HTTP版本,以及HTTP首部等部分构成。而其中HTTP首部字段信息最为丰富。 请求首部字段: 1、Accept 通知服务器用户代理可处理的媒体类型及媒体类型的相对优先级,可使用type/subtype这种形式,一次指定多种媒体类型 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,\*/\*;q=0.8 q表示权重,默认值为1.0,当服务器提供多种内容时,将会有优先返回权重值最高的媒体类型 下面举几个例子: 文本文件: text/html,text/plain,text/css... application/xhtml+xml,application/xml... 图片文件: image/jpeg,image/gif,image/png... 视频文件: video/mpeg,video/quicktime... 应用程序使用的二进制文件 application/octet-stream,application/zip... 2、Accept-Cherset 通知服务器用户代理支持的字符集及字符集的相对优先级,可一次性指定多个字符集。 该首部字段可用权重q值来表示相对优先级 该首部字段应用于内容协商机制的服务器驱动协商 Accept-Charset: iso-8859-5, unicode-1-1;q=0.8 3、Accept-Encoding 告知服务器用户代理支持的内容编码及内容编码优先级顺序,可一次性指定多种内容编码 Accept-Encoding: gzip, deflate 常用的几种编码格式: gizp:由文件压缩程序gzip(GUN zip)生成的编码格式 compress:由UNIX文件压缩程序compress生成的编码格式 deflate:组合使用zlib格式及由deflate压缩格式生成的编码格式 jdentity:不执行压缩或不会变化的默认编码格式 同样,这里可以使用q值表示相对优先级,也可以使用(\*)作为通配符,指定任意的编码格式 4、Accept-Lanuage 告知服务器用户代理能够处理的自然语言集,以及其相对有限集,可一次指定多种自然语言集 同样可使用权重值q表示相对优先级 Accept-Lanuage: zh-cn,zh;q=0.7,en=us,en;q=0.3 5、Authorization 告知服务器用户代理的认证信息(证书值)。 通常想要通过验证的用户代理会在接受到第一次返回的401状态码响应后,把首部字段加入请求中,共用缓存接收到含有该字段的请求时操作处理会有所差异 6、Expect 客户端使用该字段告知服务器,期望出现某种特定行为 如果服务器无法理解期望作出回应而发生错误,会返回状态码417Expect Failed,客户端可以利用该字段,写明所期望的扩展 http/1.1规范值定义了100-continue(转台吗100Continue之意) Expect: 100-continue 7、From 告知服务器使用用户代理的用户垫子邮件地址 目的:显示搜索引擎等用户代理的负责人的电子邮件联系方式 From: IMyalost@163.com 8、Host 告知服务器请求的资源所处的互联网主机名和端口号 Host首部字段是在HTTP/1.1规范内唯一一个必须被包含在请求内的首部字段 Host: www.baidu.com 9、If-Match 格式如If-xxx这样的请求首部字段,都可以称之为条件请求,服务器收到请求,只有判定条件为真时,才会执行请求 该字段告知服务器匹配资源所用的实体标记(ETag)值,这时无法使用弱ETag值 如果判断条件不为真,则返回412Precondition Failed响应 还可以使用(\*)指定If-Match的字段值,这种情况下服务器将忽略ETag值,只要资源存在就处理请求 If-Match: "123456" 10、If-Modified-Since 条件请求,告知服务器若字段指定值早于资源更新时间,则希望能处理请求,如果在该字段指定的日期时间大于资源更新时间,则返回304Not Modified响应 用于确认代理或者客户端拥有的本地资源的有消息 If-Modified-Since: Thu, 15 Apr 2004 00:00:00 GMT 11、If-None-Match 条件请求,和If-Match作用相反。当该字段值的实体标记(ETag)值与请求资源的ETag不一致时,告知服务器处理该请求 在GET或HEAD方法中使用该字段可获取最新的资源 12、If-Range 条件请求,告知服务器若指定的值和请求资源的值一致,则作为范围请求处理,反之,则返回全部资源 request: response: GET /index.html 206 Partial Content If-Range: "123456" Content-Range: bytes 5001-10000/10000 Range: bytes=5001-10000 Content-Length:5000 上面的请求和资源匹配一致,那么久作为范围请求处理 13、If-Unmodified-Since 条件请求,该字段和If-Unmodified-Since字段作用相反,作用是告知服务器,指定的请求资源只有在字段值内指定的日期之后,未发生更新的情况下,才能处理请求。 如指定时间之后发生更新,则返回412 Precondition Failed作为响应返回 If-Unmodified-Since: Thu, 03 Jul 2016 00:00:00 GMT 14、Max-Forwards 我们都知道使用http协议通信时,请求可能会经过代理等多台服务器,如果由于某些原因导致请求转发失败,那么客户端收不到响应,我们对此一无所知 通过TRACE或者OPTIONS方法,发送包含该字段的请求时,该字段以十进制整数形式指定可经过的服务器最大数目 简单来讲,就是指定Max-Forwards的值,每经过一次转发,就-1.当值变为0.直接返回响应 Max-Forwards: 10 15、Proxy-Authorization 收到代理服务器发来的认证质询时,客户端向代理服务器发送包含首部字段的请求,以告知服务器所需要的认证的信息 Proxy-Authorization: Basic dGLwoPNLAGKGFY5 16、Range 对于只需获取部分资源的范围请求,包含首部字段Range即可告知服务器资源的指定范围 接收到附带Range字段的服务器,会返回206Partial Content的响应;无法处理请求时,则返回200 OK的响应及全部资源 Range: bytes=5001-10000 17、Referer 告知服务器请求的原始资源的URI Referer:www,baidu.com/index.xml 18、TE 告知服务器客户端能够处理响应的传输编码方式及相对优先级 TE:gzip, deflate;q=0.5 该字段还可以指定伴随trailer字段的分块传输编码的方式 TE:trailers 19、User-Agent 该字段会将创建请求的浏览器和用户代理名称等信息传给服务器 如果由网络爬虫发起请求,可能会在请求中添加爬虫作者的垫子邮件地址。因此,如果请求经过代理,那么中间也很可能被添加上代理服务器名称 User-Agent: Mozilla/5.0 (windows NT 6.1; WOW64; rv13.0) Gecko/=20100101 Firfox/13.0.1 **HTTP的缺点:** * 通信使用明文(不加密),内容可能会被窃听。 * 不验证通信方的身份,因此有可能遭遇伪装。 * 无法证明报文的完整性,所以有可能已遭篡改。 **HTTPS** HTTPS并非是应用层的一种新的协议。只是HTTP通信接口部分用SSL(Secure Socket Layer)和TLS(Transport Layer Security)代替而已。 通常。HTTP直接和TCP通信。当使用SSL时,则演变成先和SSL通信,再由SSL和TCP通信了。简言之,所谓HTTPS就是HTTP加上了SSL。 **总结 : HTTPS = HTTP + 加密 + 认证 + 完整性保护 = HTTP + SSL**
还没有评论,来说两句吧...