HTTP 报文结构及状态码

URL

URL标准格式:

://:@:/?#

frag <片段>:
HTTP服务器通常只处理整个对象,而不是对象的片段,客户端不能将片段传送给服务器。浏览器从服务器获得了整个资源之后,会根据片段定位到指定浏览位置。

HTTP 请求报文
什么是请求报文?
报文的组成部分?
  • 报文描述的 -> 起始行
  • 包含属性的 -> 首部块
  • 可选的,包含数据的 -> 主体部分。
请求报文,响应报文

请求报文格式:




比如:

GET  /specials/saw-blade.gif  HTTP/1.0
Host:www.baidu.com
  • 方法(method):
    客户端希望服务端对资源执行的动作。比如,GET,HEAD,POST

  • 请求URL(request-URL):
    命名了所请求资源的路径

  • 版本(version):
    报文所使用的HTTP版本,其格式看起来是这样子的:
    HTTP/.
    其中 主要版本号(major)和次要版本号(minor)都是整数。

  • 响应报文的格式:




  • 状态码(status-code):
    这三位数字描述了请求过程中所发生的情况。每个状态码的第一位数
    字用于描述状态的一般类别("成功","出错"等)。

  • 原因短语(reason-phrase):
    数字状态码的可读版本,包含行终止序列之前的所有文本。比如:OK

  • 首部(header):
    可以有零个或者多个首部,每个首部都包含一个名字,后面跟着一个冒号(:),然后是一个可选的空格,接着是一个值,最后是一个回车换行。首部是由一个回车换行结束的,表示了首部列表的结束和实体主体不部分的开始。有些HTTP版本中,比如 HTTP/1.1,要求有效的请求和响应报文中必须包含特定的首部。

  • 实体的主体部分(entity-body):
    实体的主体部分包含一个由任意数据组成的数据块,并不是所有的报文都包含实体的主体部分。

比如如下就是一个响应报文格式:

起始行: HTTP/1.0 200 OK
首部:Content-Type: text/plain
     Content-length: 19
主体:Hi ! I'm a message.
  • 起始行
    分为:请求行,响应行
    请求行:请求报文 请求服务器对资源进行一些操作。
    响应行:响应报文承载了状态信息和操作产生的所有结果数据,将其返回给客户端。
方法
GET

用于请求服务器发送某个资源,HTTP/1.1要求服务器实现此方法。
例子:

请求报文:
GET /seasonal/index-fall.html HTTP/1.1
HOST: www.joes-hardware.com
Accept: *

响应报文:
HTTP/1.1 200 OK
Content-Type: text/html
Context-Length: 617


JoeOs Special Offers 
HEAD

HEAD 方法与 GET方法的行为很类似,但服务器在响应中只返回首部。不会返回实体的主体部分。

PUT

与GET从服务器读取文档相反,PUT方法会向服务器写入文档。

POST

POST 用于向服务器发送数据。PUT用于向服务器上的资源(例如文件)中存储数据。

TRACE

客户端发起一个请求的时候,这个请求可能要穿过防火墙,代理,网关或者其他一些应用程序。TRACE请求会在目的服务器发起一个"环回"诊断。行程最后一站的服务器回弹回一条 TRACE 响应,并在响应主体中携带它收到的原始请求报文。这样客户端就可以查看在所有中间 HTTP 应用程序组成的请求/响应链上,原始报文是否,以及如何被毁坏或修改过。

OPTIONS

OPTIONS 方法请求Web服务器告知其支持的各种功能,可以询问服务器通常支持哪些方法,或者对某些特殊资源支持哪些方法。

请求报文:
OPTIONS * HTTP/1.1
Host: www.joes-hardware.com
Accept: *

响应报文:
HTTP/1.1 200 OK
Allow: GET,POST,PUT,OPTIONS
Content-length: 0
DELETE

DELETE 方法所做的事情就是请服务器删除请求URL所指定的资源。

状态码
100 ~ 199 信息性状态码

100 continue:说明收到了请求的初始部分,请客户端继续。发送了这个状态码之后,服务器在收到请求之后必须进行响应。

200 ~ 299 成功状态码

200 OK : 请求没问题,实体的主体部分包含了所请求的资源
204 No Content: 表明请求被成功处理,但是在返回的响应报文中不包含实体的主体部分。
206 Partial Content:范围内的请求

300 ~ 399 (重定向)表示完成请求,需要进一步操作。通常,这些状态码,需要进一步操作

300:请求资源可以在多处得到
301:永久重定向,在Location响应首部的值仍为当前URL(隐式重定向)
302:临时重定向,在Location响应首部的值仍为新的URL(显示重定向)
303:建议客户端访问其他URL或访问方式
304:Not Modified 请求的资源没有改变 可以继续使用缓存
305:请求的资源必须从服务器指定的地址得到
306:前一版本HTTP中使用的代码,现行版本中不再使用
307:声明请求的资源临时性删除

400 ~ 499 客户端错误状态码

400:错误请求,如语法错误
401:未授权
402:保留有效ChargeTo头响应
403:禁止访问
404:没有发现文件,查询或URL

500 ~ 599 服务器内部状态码

500:内部服务器状态码
501:未实现
502:网关错误
503:服务不可用
504:网关超时

你可能感兴趣的:(HTTP 报文结构及状态码)