1.HTTP概述
http是一种超文本传输协议。是基于TCP的应用层协议,是基于请求与响应模式的无状态的应用层协议。
2.HTTP结构
2.1)请求报文结构
引用网上图片:
- 请求行:包含请求方法、请求地址、http版本号。
- 常用请求Method有:GET、POST、PATCH、DELETE、PUT五种,另外还有HEAD、TRACE、OPTIONS、CONNECT。
请求方法介绍
GET:显示的请求资源,一般用于读取数据资源。GET方法一般认为是不安全的请求方法,他将请求信息完全的暴露在外面,容易被抓取爬取、任意访问。
POST:向url地址提交数据(提交表单、上传文件等)获取响应。
PATCH:与PUT请求类似,用于向服务端请求更新资源。PATCH方法出现在HTTP/1.1版本之后,但是与PUT有些许不同:
> * PATCH一般用于部分更新,而PUT一般用于整体更新。
> * 当资源不存在时,PATCH会创建资源,而PUT不会只会对已有资源进行更新。
DELETE:用于向服务器请求删除资源。
PUT:用于向服务器请求数据修改,新增或者修改。
HEAD:与GET方法一样都是向服务器发送指定资源的请求,但是服务器在响应HEAD请求时不会回传资源的内容部分。一般用于客户端查看服务端性能。
TRACE:请求服务器回显其收到的请求信息,该方法主要用于HTTP请求的测试或诊断。
OPTIONS:请求与HEAD类似,一般也是用于客户端查看服务器的性能。 这个方法会请求服务器返回该资源所支持的所有HTTP请求方法,该方法会用’ * ‘来代替资源名称,向服务器发送OPTIONS请求,可以测试服务器功能是否正常。
CONNECT:方法是HTTP/1.1协议预留的,能够将连接改为管道方式的代理服务器。通常用于SSL加密服务器的链接与非加密的HTTP代理服务器的通信。 -
消息报头: 由一系列的键值对组成,http允许客户端向服务端发送一些附加信息或者客户端的自身信息,主要包括:
header 解释 示例 Accept 指定客户端能够接收的内容类型 Accept: text/plain, text/html Accept-Charset 可以接受的字符编码集 Accept-Charset: utf-8 Accept-Encoding 指定可以支持的web服务器返回内容压缩编码类型 Accept-Encoding: compress, gzip Accept-Language 指定可以接受的语言 Accept-Language: en,zh Accept-Ranges 可以请求网页实体的一个或者多个自范围字段 Accept-Ranges: bytes Authorization HTTP授权的授权证书类型 Cache-Control 请求遵循的缓存机制 Cache-Control: no-cache Connection 是否需要持久连接(http/1.1默认长连接) Connection: close Cookie cookie Cookie: aa=1; vv=2; Content-Length 请求内容长度 Content-Length: 500 Content-Type 请求的实体对应的MIME信息 Content-Type: application/x-www-form-unlencodod - 请求正文 请求提交的表单数据,GET方法没有请求正文。
2.2)响应报文结构
同样引用网络图片,响应报文结构如下。
响应报文也由四个部分组成:
- 响应状态行:包含http版本、响应状态码、对应响应状态码的描述以及换行。
常用状态码
2xx:成功请求
200 OK 从客户端发送的请求在服务端被正常处理了。
204 No Content 服务器接受的请求已成功处理,但返回的响应报文的主体部分不包含实体(浏览器页面不更新,仅发送信息给服务器) 206 Partial Content 客户端进行了范围请求,而服务器成功执行了这部分请求3XX重定向浏览器需要执行某些特殊的处理以正确处理请求。
301 Moved Permanently 永久性重定向,请求的资源已经分配了新的URI,以后应该使用资源现在所指的URI
302 Found 临时性重定向,请求的资源临时分配了新的URI,希望用户本次可以使用新的URI访问
注意:当301,302,303响应状态码返回时,几乎所有的浏览器会把POST改成GET,并删除请求报文内的主体,之后请求会自动再次发送304 Not Modified 服务器端资源未改变,可直接使用客户端未过期的缓存,不包含任何响应的主体部分4XX客户端错误客户端是发生错误的原因所在。
400 Bad Request 请求报文中存在语法错误
401 Unauthorized 请求需要有通过HTTP认证的认证信息。另外如果之前已进行一次请求,则表示用户认证失败
403 Forbidden 对请求资源的访问被服务器拒绝了,如未获得文件系统的访问授权,访问权限出现某些问题
404 Not Found 服务器上没有请求的资源
408 Request Timeout(请求超时) 服务器等候请求时发生超时。
499 client has closed connection 服务器端处理的时间过长,客户端主动断开链接,ngix定义的状态码5XX服务器错误服务器是发生错误的原因所在。
500 Internal Server Error 服务器在执行请求时发生了错误,Bug或临时故障
502 Bad Gateway(错误网关) 服务器作为网关或代理,从上游服务器收到无效响应。
503 Service Unavailable 服务器暂时处于超负荷或正在进行停机维护,现在无法处理请求