HTTP协议

    HTTP协议简介   

 

1.HTTP协议(超文本传输协议),是一个客户端和服务器端请求和应答的标准(TCP)是用于从万维网(WWW )服务器传输超文本到本地浏览器的传送协议。

2.HTTP基于TCP/IP通信协议来传递数据

3.HTTP基于客户端/服务端(C/S)架构模型,通过一个可靠的链接来交换信息,是一个无状态的请求/响应协议

特点:

(1)HTTP是无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间

(2)HTTP是无状态:无状态是指协议对于事务处理没有记忆能力。意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快

(3)HTTP协议以明文方式发送内容,不提供任何方式的数据加密

 

    HTTP请求报文和响应报文   

HTTP报文是面向文本的,报文中的每一个字段都是一些ASCII码串
HTTP有两类报文:请求报文和响应报文。
HTTP请求报文
HTTP请求报文由3部分组成(请求行+请求头+请求体):

一次完整的HTTP请求所经历的7个步骤:

1. 建立TCP连接
2. Web浏览器向Web服务器发送请求命令(发送请求行)
3. Web浏览器发送请求头信息(发送请求头)
4. Web服务器应答
5. Web服务器发送应答头信息
6. Web服务器向浏览器发送数据 (发送请求体)
7. Web服务器关闭TCP连接

实际报文请求:

请求行:

①是请求方法,GET和POST是最常见的HTTP方法

②为请求对应的URL地址

③是协议名称及版本号

请求头:

④是HTTP的报文头,报文头包含若干个属性,格式为“属性名:属性值”,服务端据此获取客户端的信息。

与缓存相关的规则信息,均包含在header中

请求体:

⑤是报文体,它将一个页面表单中的组件值通过param1=value1&param2=value2的键值对形式编码成一个格式化串,它承载多个请求参数的数据。

叫外卖:老板,我要一份[鱼香肉丝],要12:30之前给我送过来,我xxxx公司研发部,叫xxx。xxx

这里,[鱼香肉丝]相当于HTTP报文体,而“12:30之前送过来”,你叫“xxx”等信息就相当于HTTP的报文头

Http请求中常见的请求方式?

GET 请求指定的页面信息,并返回实体主体
POST 向指定资源提交数据进行处理请求
PUT 从客户端向服务器传送的数据取代指定的文档的内容。(替换资源)
DELETE 请求服务器删除指定的页面。
OPTIONS 允许客户端查看服务器的性能(跨域相关)
PATCH 用于更新部分资源

Http请求中常见的请求头

Content-Type  决定显示返回的消息体内容的格式(POST和PUT请求的数据类型)
User-Agent    告诉HTTP服务器,客户端使用的操作系统和浏览器的名称和版本
Host 服务区域名
Accept 告诉服务端 客户端接受什么类型的响应 Accept:text/plain
Cookie 将cookie的值发送给HTTP服务器
Referer 告诉服务器请求是从哪个链接过来的,
Cache-Control 对缓存进行控制,如一个请求希望响应返回的内容在客户端要被缓存一年,
或不希望被缓存就可以通过这个报文头达到目的

Http请求中常见的请求体

Form表单提交:
 POST /index http1.1\r\nhost:www.luffycity.com...\r\n\r\nusername=alex&password=123&... 
Ajax请求:
POST /index http1.1\r\nhost:www.luffycity.com...\r\n\r\nusername=alex&password=123&...
POST /index http1.1\r\nhost:www.luffycity.com...\r\n\r\n{“username”:"alex","password":123}
HTTP响应报文
HTTP的响应报文也由三部分组成(响应行+响应头+响应体)

响应行:

①报文协议及版本; 
②状态码及状态描述;

响应头:

③响应报文头,也是由多个属性组成;

响应体:

④响应报文体,即我们真正要的“干货”

常用的状态码:

 

2**    成功,操作被成功接收并处理
    200        请求成功。一般用于GET与POST请求
    201        已创建。成功请求并创建了新的资源
3**    重定向
    301 永久移动
    302 临时移动
    304 所请求的资源未修改,不会返回任何资源
4**    客户端错误
    400        客户端请求的语法错误,服务器无法理解
    403        服务器收到请求客户端的请求,但是拒绝执行此请求 比如没有找到cookie
    404     请求资源不存在
5**    服务器错误
    500 服务器内部错误,无法完成请求
    503 服务器暂时的无法处理客户端的请求,,一段时间后可能恢复正常 

 

常见的HTTP响应报文头属性

 

ache-Control  服务端告诉客户端如何控制响应内容的缓存Cache-Control: max-age=3600  
让客户端对响应内容缓存3600秒,也即在3600秒内,
如果客户再次访问该资源,直接从客户端的缓存中返回内容给客户,不要再从服务端获取

ETag 代表响应服务端资源版本的报文头属性,如果某个服务端资源发生变化了,这个ETag就会相应发生变化
Set-Cookie 服务端可以设置客户端的Cookie
Location: http://www.iteye.com
让页面Redirect到一个某个A页面中,其实是让客户端再发一个请求到A页面,这个需要Redirect到的A页面的URL,其实就是通过响应报文头的Location属性告知客户端的,
 
posted @ 2018-06-30 18:31  JERD  阅读(174)  评论(0编辑  收藏  举报