HTTP基础
HTTP(Hypertext Transfer Protocol)是一种用于传输超文本数据的协议,是互联网上应用最为广泛的协议之一。它是建立在TCP协议之上的一种应用层协议,它的目的是通过互联网传输数据,是一种客户端-服务器协议,由请求和响应构成一个完整的数据传输过程。
HTTP工作原理
客户端向服务器发送HTTP请求,服务器接收到请求后必须以响应消息作为响应进行回应,常见的HTTP请求方法有GET,POST,PUT等,常用的HTTP响应码有200表示成功,404表示资源未找到等。
HTTP请求方法:
- GET:请求指定的页面信息,并返回实体主体。
- POST:向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的添加和/或已有资源的修改。
- HEAD:类似于GET请求,只不过返回的响应没有具体的内容,用于获取HTTP头信息。
- PUT:从客户端向服务器传送的数据取代指定的文档内容。可以用于添加,修改资源。
- DELETE:请求服务器删除指定的页面。
- CONNECT:将服务器作为跳板,让服务器代替客户端向其他服务器网络请求资源,用于加密流量。
- OPTIONS:描述对请求资源所支持的所有HTTP请求方法的缓存。
- TRACE:回显服务器收到的请求,主要用于测试或者诊断。
HTTP响应码:
- 1xx:信息性状态码,服务器仅仅是接收到请求,需要请求者继续执行操作。
- 2xx:成功状态码,表示请求已被成功接收、理解、接受。
- 3xx:重定向状态码,需要客户端进一步处理请求,通常用于重定向。
- 4xx:客户端错误状态码,服务器无法处理请求,通常是客户端代码错误导致的。
- 5xx:服务器错误状态码,服务器处理请求出错。
HTTP 请求和响应消息结构:
HTTP请求和响应消息都包含三个部分,分别是起始行、消息报头和消息主体。
起始行:
在请求和响应消息中,起始行都包含了协议版本、响应状态码和状态信息等信息。
例如请求行:
GET /index.html HTTP/1.1
其中,GET是请求方法;/index.html是请求的资源路径;HTTP/1.1是协议的版本号。
响应行:
HTTP/1.1 200 OK
其中,HTTP/1.1是响应的协议版本号;200是响应状态码,OK是状态信息。
报头:
HTTP报头用于在请求和响应消息中传递附加的信息,它包括通用报头、请求报头、响应报头和实体报头四个部分。通用报头和实体报头与请求和响应消息的实体无关,而请求和响应报头和实体相关。
请求报头:
请求报头用于在请求消息中传递请求参数、非资源表述等信息,例如请求消息 POST /index.html HTTP/1.1 中的Content-Type: application/json就是一个请求报头。
响应报头:
响应报头用来传输响应消息扩展信息,例如响应消息 HTTP/1.1 200 OK 中的Content-Encoding: gzip就是一个响应报头。
实体报头:
实体报头用于描述请求或响应的有效载荷,例如Content-Length、Content-Encoding等。
消息主体:
消息主体包含了请求或响应所传输的数据。
HTTP工作流程:
- 客户端通过发送HTTP请求向服务器请求数据;
- 服务器接受请求并根据请求返回HTTP响应;
- 客户端解析响应,处理返回的数据。
HTTP实例
以获取百度网站首页为例,来说明HTTP的具体实现过程。
请求消息:
GET / HTTP/1.1
其中,GET表示请求方法;/是请求的资源路径;HTTP/1.1是协议的版本号。
响应消息:
HTTP/1.1 200 OK
Content-Type: text/html
...
其中,HTTP/1.1是响应的协议版本号,200是响应状态码,OK是状态信息;Content-Type是响应报头,text/html表示响应消息主体的内容类型;到