前端必备HTTP技能之请求头响应头格式以及请求方法简述

请求头响应头格式

http协议中,客户端和服务端通过发送纯文本(ASCII)消息的方式进行通信,客户端发送请求(requests)到服务端,服务端发送响应(responses)到客户端。
请求消息格式

1.请求行,例如:GET /images/logo.png HTTP/1.1
2.请求头,例如:Accept: text/plain
3.空行
4.可选择的请求体

例子:

GET /index.html HTTP/1.1
Host: www.example.com

响应消息格式

1.包含状态码的状态行,例如:HTTP/1.1 200 OK
2.响应头,例如:Content-Type: text/html
3.空行
4.可选择的消息体

例子:

HTTP/1.1 200 OK
Date: Mon, 23 May 2005 22:38:34 GMT
Content-Type: text/html; charset=UTF-8
Content-Encoding: UTF-8
Content-Length: 138
Last-Modified: Wed, 08 Jan 2003 23:11:55 GMT
Server: Apache/1.3.3.7 (Unix) (Red-Hat/Linux)
ETag: "3f80f-1b6-3e1cb03b"
Accept-Ranges: bytes
Connection: close



  An Example Page


  Hello World, this is a very simple HTML document.


请求方法

为了标识特定资源需要特定的行为访问,HTTP协议定义了多种请求方法。这种特定资源是什么样的,是已有的数据,还有动态生成的?主要依赖于服务端实现。通常来说这种资源对应一个文件或者属于服务端的一个可执行输出。

HTTP/1.0规范定义三种请求方法:GET, POST, HEAD。HTTP/1.1规范又增加了五种:OPTIONS, PUT, DELETE, TRACE,CONNECT。

GET
用来请求特定资源,规范规定使用GET方法应该只是用来获取数据,不能有其他行为。其他HTTP方法也有类似准则,实际就是规范定义的每种HTTP方法的作用很单一,不建议在HTTP方法上应用其他行为。
HEAD
和GET请求类似,但是HEAD请求的响应体中不应该包含响应体,只是用来获取响应头中的元信息,这样就不用传输整个响应内容,节省流量。
POST
请求服务端接受请求体中的整个实体作为给定URI资源的一部分,这些实体可以是表单数据,数据库中的项,新闻组,邮件列表,评论等。
PUT
请求把封闭的实体存储在给定的URI下,如果这个URI对应的资源已经存在,那么会修改这个资源;如果这个URI对应的资源不存在,服务器会根据URI创建一个新资源。
DELETE
请求删除指定资源。
TRACE
请求打印接受到的请求,这样客户端就可以看到中间服务做了哪些改变或者新增了哪些东西。
OPTIONS
请求返回针对特定URL服务器支持哪些HTTP方法,这样可以用来检查web服务器的功能,通过请求*而不是特定资源的方式。
CONNECT
请求把连接转成透明的TCP/IP通道,通常用于使用非加密的HTTP代理实现HTTPS。
PATCH
适用于修改资源的一部分。

在规范中定义的这些请求方法是语义化的,并且是可依赖的。任何客户端都可以使用任何请求方法,服务端也可以配置成支持任何这些请求方法的组合。

实际上这些请求方法可以随意定义,没有数量限制,不过你自己定义出来的请求方法会被认为是不安全并且是非幂等的。

总结:这些请求方法本质上没有区别,最终都是TCP请求,唯一的区别就是每个请求方法,使用的时候,规范规定的使用格式不同,原则上必须按照规范规定的格式使用,其实也可以违反规范使用,比如你可以使用GET方法请求数据,也可以使用GET方法提交数据,当然你可以用POST方法提交数据,也可以用POST方法获取数据。

做好前端开发必须对HTTP的相关知识有所了解,所以我创建了一个专题前端必备HTTP技能专门收集前端相关的HTTP知识,欢迎关注,投稿。


资料来源:
https://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol

你可能感兴趣的:(前端必备HTTP技能之请求头响应头格式以及请求方法简述)