HTTP 报文结构及状态码

2018-03-05  本文已影响0人  lazy_boy_coder
URL

URL标准格式:

<scheme>://<user>:<password>@<host>:<port>/<path>?<query>#<frag>

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

HTTP 请求报文
什么是请求报文?
报文的组成部分?
请求报文,响应报文

请求报文格式:

<method><request-URL><version>
<headers>
<entity-body>

比如:

GET  /specials/saw-blade.gif  HTTP/1.0
Host:www.baidu.com
<version><status><reason-phrase>
<headers>
<entiy-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

<HTML>
<HEAD><TITLE>JoeOs Special Offers </TITLE>
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:网关超时

上一篇 下一篇

猜你喜欢

热点阅读