HTTP 知多少?HTTP报文格式+请求头+请求类型+请求状态码

1. HTTP报文基本格式

HTTP请求报文组成:请求行+请求头+请求体

  • 请求行:包含用于请求的方法(HEAD/GET/POST),请求 URI 和 HTTP 版本。
  • 请求头:客户端的Cookie和User-Agent就放在这里.
  • 请求体: 比如客户端POST的数据就放在这里(对比:GET的数据放在请求行的URL里).

HTTP响应报文组成:响应行+响应头+响应体

  • 响应行/状态行:包含表明响应结果的状态码,状态码描述和 HTTP 版本。
  • 响应头: 服务器的Set-Cookie和Server信息就放在这里.
  • 响应体: 比如服务器返回的HTML和JSON数据就放在这里

请求头有哪些内容?

•Accept:浏览器可接受的MIME类型
•Accept-Charset: 浏览器通过这个头告诉服务器,它支持哪种字符集
•Accept-Encoding:浏览器能够进行解码的数据编码方式,比如gzip
•Accept-Language:浏览器所希望的语言种类,当服务器能够提供一种以上的语言版本时要用到。可以在浏览器中进行设置。
•Host:初始URL中的主机和端口
•Referer:包含一个URL,用户从该URL代表的页面出发访问当前请求的页面
•Content-Type:内容类型
•If-Modified-Since: Wed, 02 Feb 201112:04:56 GMT利用这个头与服务器的文件进行比对,如果一致,则从缓存中直接读取文件。
•User-Agent:浏览器类型.
•Content-Length:表示请求消息正文的长度
•Connection:表示是否需要持久连接。如果服务器看到这里的值为“Keep -Alive”,或者看到请求使用的是HTTP 1.1(HTTP 1.1默认进行持久连接
•Cookie:这是最重要的请求头信息之一
•Date:Date: Mon, 22 Aug 2011 01:55:39 GMT请求时间GMT

一个完整的HTTP请求如下

GET  /sample.jsp   HTTP/1.1                    //请求行
User-Agent:Mozila/4.0(compatible;MSIE5.01;Window NT5.0)   //请求头
Accept:image/gif.image/jpeg,*/*      //请求头:指定客户端能够接收的内容格式类型
Accept-Language:zh-cn                   //请求头:指定客户端能够接受的语言类型
Connection:Keep-Alive                    //请求头:是否开启持久连接(keepalive)
Host:localhost                                  //请求头:服务器域名
Accept-Encoding:gzip,deflate          //请求头:指定客户端能够接受的编码类型
//注意这里有空的换行

username=jinqiao&password=1234   //请求体

HTTP请求

HTTP响应

2. 请求方式

现在一共8种

HTTP1.0只有三种:Get、Post、Head

  • Get 向特定资源发出请求(请求指定页面信息,并返回实体主体)
  • Post 向指定资源提交数据进行处理请求(提交表单、上传文件),又可能导致新的资源的建立或原有资源的修改
  • Head 与服务器索与get请求一致的相应,响应体不会返回,获取包含在小消息头中的原信息(与get请求类似,返回的响应中没有具体内容,用于获取报头)

HTTP1.1新增了5种:

  • Put 向指定资源位置上上传其最新内容(从客户端向服务器传送的数据取代指定文档的内容)
  • Delete 请求服务器删除request-URL所标示的资源*(请求服务器删除页面)
  • Trace 回显服务器收到的请求,用于测试和诊断
  • opions 返回服务器针对特定资源所支持的HTML请求方法 或web服务器发送*测试服务器功能(允许客户端查看服务器性能
  • Connect HTTP/1.1协议中能够将连接改为管道方式的代理服务器

3. 常见请求状态码

2开头(请求成功)标识成功处理了请求的状态代码

  • 200(成功)服务器已经处理了请求。通常,这表示服务器提供了请求的网页

3开头(请求被重定向)表示要完成请求,需进一步操作。通常,这些状态代码用来重定向

  • 301 Moved Permanently(永久重定向)请求的网页已永久移动新位置。服务器返回响应(对get或head请求的响应)时,会自动将请求转动新位置
  • 302 Found(临时重定向)该状态码表示请求的资源已被分配了新的 URI,希望用户(本次)能使用新的 URI 访问。

4开头(客户端请求错误)请求有语法错误或请求无法实现

  • 400 Bad Request 客户端请求有语法错误,不能被服务器所理解
  • 401 Unauthorized 请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用
  • 403 Forbidden 服务器收到请求,但是拒绝提供服务
  • 404 Not Found 请求资源不存在,eg:输入了错误的URL

5开头(服务器错误)这些状态码表示服务器在尝试处理请求时发生内部错误。这些错误可能是服务器本身的错误,而不是请求出错

  • ​​​​500 (服务器内部错误)服务器遇到错误,无法完成请求
  • 501(尚未实施)服务器不具备完成请求的功能。例如,服务器无法识别请求方法时可能会返回此代码
  • 502(错误网关)服务器做为网关或代理,从上游服务器收到无效响应
  • 503(服务不可用)服务器当前不能处理客户端的请求(由于超载汇总停机维护),一段时间后可能恢复正常
  • 504(网关超时)服务器做为网关或代理,但是没有及时从上游服务器收到请求
  • 505(HTTP版本不受支持)服务器不支持请求中所有的HTTP协议版本
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章