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
-
方法(method):
客户端希望服务端对资源执行的动作。比如,GET,HEAD,POST -
请求URL(request-URL):
命名了所请求资源的路径 -
版本(version):
报文所使用的HTTP版本,其格式看起来是这样子的:
HTTP/<major>.<minor>
其中 主要版本号(major)和次要版本号(minor)都是整数。 -
响应报文的格式:
<version><status><reason-phrase>
<headers>
<entiy-body>
-
状态码(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
<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:网关超时
网友评论