HTTP 与HTTPS

http请求报文

http请求报文由方法、URI、http版本。http首部字段等构成

下面给大家示例一个访问my_view_page.php的请求报文首部信息

GET /my_view_page.php HTTP/1.1

Host: 10.0.17.183:8000

Connection: keep-alive

Cache-Control: max-age=0

Upgrade-Insecure-Requests: 1

User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8

Referer: http://10.0.17.183:8000/my_view_page.php

Accept-Encoding: gzip, deflate, sdch

2、http响应报文

http响应报文由http版本、状态码(数字和原因短语)、http首部字段3部分组成

以下是刚才访问my_view_page.php时服务器返回的响应报文首部信息:

HTTP/1.1 200 OK

Cache-Control: no-store, no-cache, must-revalidate

Date: Tue, 26 Jul 2016 09:32:11 GMT

Expires: Tue, 26 Jul 2016 09:32:12 GMT

Vary: Accept-Encoding

Content-Encoding: gzip

Content-Length: 3892

Content-Type: text/html; charset=utf-8

Last-Modified: Tue, 26 Jul 2016 09:32:12 GMT

通用首部字段

Cache-Control:
   no-cache:
      1)请求中如包含该命令,表示客户端不会接收缓存过的响应,必须向源放武器转发请求
      2)响应中包含该命令,那么缓存服务器不能对其资源进行缓存
      3)如果响应中no-cache=Location,那么客户端也不能缓存
   no-store:请求中包含机密信息,对方不能在本缓存请求或响应的任一部分
   max-age:
      1)缓存资源缓存时间数值低于该值,就接受缓存的资源,如max-age为0,则需要请求源服务器
      2)http1.1中,如遇到存在Expires首部字段的情况,会忽略Expires字段,优先处理max-age指令
     min-fresh:要求缓存服务器返回未过指定时间的资源
   no-transform:要求无论请求还是响应,都不能改变实体主体的媒体类型,防止缓存或者代理压缩图片等操作
Connection:
  1)http1.1默认都是持久连接,客户端会在持久连接上持续发送请求,当服务器明确表示需要断开连接时,则指明首部字段值为close
  2)http1.1之前的版本默认都是非持久连接,需要在旧版本上保持持久连接,需要加入Keep-Alive
Date:
  表明创建http报文的日期和时间 (Date: Sun, 31 Jul 2016 01:28:48 GMT)
Transfer-Encoding:
  规定报文主体的编码方式,http1.1的传输编码方式仅对分块传输编码有效(Transfer-Encoding: chunked)

请求首部字段

Accept:通知服务器客户端可处理的媒体类型相对优先级,可使用type/subtype这种形式,q表示权重,默认值为1.0(Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8)

Accept-Cherset:通知服务器客户端支持的字符集及字符集的相对优先级(Accept-Charset: iso-8859-5, unicode-1-1;q=0.8)

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

                            gizp:由文件压缩程序gzip(GUN zip)生成的编码格式

                            compress:由UNIX文件压缩程序compress生成的编码格式

                            deflate:组合使用zlib格式及由deflate压缩格式生成的编码格式

                            jdentity:不执行压缩或不会变化的默认编码格式

Accept-Lanuage:告知服务器用户代理能够处理的自然语言集(告知服务器用户代理能够处理的自然语言集)

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

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

Referer:告知服务器请求的原始资源的URI

User-Agent:   创建请求的浏览器和用户代理名称等信息传给服务器(User-Agent: Mozilla/5.0 (windows NT 6.1; WOW64; rv13.0) Gecko/=20100101 Firfox/13.0.1)

响应首部字段:

Accept-Ranges:告知客户端服务器能否处理范围请求,以指定获取服务器的某部分资源

       1)bytes:可处理范围请求

       2)none:不能处理范围请求

Age:告知客户端源服务器创建响应多久了,单位S

Location:基本上该字段都会配合3xx:Redirction的响应,提供重定向的URI

Server:告知客户端当前服务器上安装的http服务器应用程序的信息。(Server: Apache/2.2.17(Unix))

实体首部字段:

Allow:通知客户端能够支持的Request-URI指定资源方法,如果服务器接收到不支持的方法,会返回状态码405(Allow:GET, HEAD)

Content-Encoding:告知客户端服务器对实体的主体部分的选用的内容编码方式(Content-Encoding: gizp)

Content-Lanuage:告知客户端实体主体使用的自然语言(Content-Lanuage: zh-CN)

Expires:告知客户端资源失效的日期(Expires: Wed, 04 Jul 2016 09:26:05 GMT)

HTTP状态码:

- 1xx:   指示信息—表示请求已接收,继续处理。

- 2xx:   成功—表示请求已经被成功接收、理解、接受。

- 3xx:   重定向—要完成请求必须进行更进一步的操作。

- 4xx:   客户端错误—请求有语法错误或请求无法实现。

- 5xx: 服务器端错误—服务器未能实现合法的请求。

几个特殊的状态码

  200     OK    客户端请求成功

  400     Bad Request   由于客户端请求有语法错误,不能被服务器所理解。

  401     Unauthonzed   请求未经授权。这个状态代码必须和WWW-Authenticate报头域一起使用

  403     Forbidden   服务器收到请求,但是拒绝提供服务。服务器通常会在响应正文中给出不提供服务的原因

  404     Not Found   请求的资源不存在,例如,输入了错误的URL。

  500     Internal Server Error 服务器发生不可预期的错误,导致无法完成客户端的请求。

  503     Service Unavailable   服务器当前不能够处理客户端的请求,在一段时间之后,服务器可能会恢复正常。

keep-alive:
每个http请求都要求打开一bai个tpc socket连接,并且使用一次du之后就断开这个tcp连接。使用keep-alive可以改善这种状态,即zhi在一次TCP连接中可以持续发送多份数据而不会断开连接。通过使用keep-alive机制,可以减少tcp连接建立次数

https相当于身披SSL外壳的http

https并非应用层的一种新协议,而是在http通信接口部分用SSL(Secure Socket Layer:安全套接字层)和TLS(Transport Layer Security:安全层传输协议)协议代替

通常,http和TCP直接通信,当使用SSL时,先由http和SSL通信,再由SSL和TCP通信

 

原文地址:https://www.cnblogs.com/paulwinflo/p/13530035.html