您当前的位置:首页 > 计算机 > 服务器 > 网络服务

HTTP 协议知识点总结

时间:12-14来源:作者:点击数:
CDSY,CDSY.XYZ

请求方法

请求方法是请求一定的 Web 页面的程序或用于特定的 URL。可选用下列几种:

  • GET: 请求指定的页面信息,并返回实体主体。
  • HEAD: 只请求页面的首部。
  • POST: 请求服务器接受所指定的文档作为对所标识的URI的新的从属实体。
  • PUT: 从客户端向服务器传送的数据取代指定的文档的内容。
  • DELETE: 请求服务器删除指定的页面。
  • OPTIONS: 允许客户端查看服务器的性能。
  • TRACE: 请求服务器在响应中的实体主体部分返回所得到的内容。
  • PATCH: 实体中包含一个表,表中说明与该URI所表示的原内容的区别。
  • MOVE: 请求服务器将指定的页面移至另一个网络地址。
  • COPY: 请求服务器将指定的页面拷贝至另一个网络地址。
  • LINK: 请求服务器建立链接关系。
  • UNLINK: 断开链接关系。
  • WRAPPED: 允许客户端发送经过封装的请求。
  • Extension-method:在不改动协议的前提下,可增加另外的方法。

服务器响应

当服务器响应时,其状态行的信息为 HTTP 的版本号,状态码,及解释状态码的简单说明。

关于实体头部的内容还可以有:

  • Last Modified : 请求文档的最近修改时间。
  • Expires : 请求文档的过期时间。
  • Connect-length : 文档数据的长度。
  • WWW-authenricate : 通知客户端需要的认证信息。
  • Connect-encoding : 说明有无使用压缩技术。
  • Transfer-encoding : 说明采用的编码变换类型。

常见错误

临时响应 1xx

表示临时响应并需要请求者继续执行操作的状态代码。

100 继续

请求者应当继续提出请求。 服务器返回此代码表示已收到请求的第一部分,正在等待其余部分。

101 切换协议

请求者已要求服务器切换协议,服务器已确认并准备切换。

成功 2xx

表示成功处理了请求的状态代码。

200 OK

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

201 已创建

请求成功并且服务器创建了新的资源。

202 已接受

服务器已接受请求,但尚未处理。

203 非授权信息

服务器已成功处理了请求,但返回的信息可能来自另一来源。

204 无内容

服务器成功处理了请求,但没有返回任何内容。

205 重置内容

服务器成功处理了请求,但没有返回任何内容。

206 部分内容

服务器成功处理了部分 GET 请求。

重定向 3xx

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

300 多种选择

针对请求,服务器可执行多种操作。 服务器可根据请求者 (user agent) 选择一项操作,或提供操作列表供请求者选择。

301 永久移动

请求的网页已永久移动到新位置。 服务器返回此响应(对 GET 或 HEAD 请求的响应)时,会自动将请求者转到新位置。

302 临时移动

服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。

303 查看其他位置

请求者应当对不同的位置使用单独的 GET 请求来检索响应时,服务器返回此代码。

304 未修改(Not Modified)

自从上次请求后,请求的网页未修改过。 服务器返回此响应时,不会返回网页内容。

305 使用代理

请求者只能使用代理访问请求的网页。 如果服务器返回此响应,还表示请求者应使用代理。

307 临时重定向

服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。

请求错误 4xx

这些状态代码表示请求可能出错,妨碍了服务器的处理。

400 错误请求(Bad Request)

服务器不理解请求的语法。

401 未认证

请求要求身份验证。 对于需要登录的网页,服务器可能返回此响应。

402 需要付费
403 禁止(Forbidden)

服务器拒绝请求。

404 未找到(Not Found)

服务器找不到请求的网页。

405 方法不允许

禁用请求中指定的方法。

406 不接受

无法使用请求的内容特性响应请求的网页。

407 需要代理认证

此状态代码与 401(未授权)类似,但指定请求者应当授权使用代理。

408 请求超时

服务器等候请求时发生超时。

409 冲突

服务器在完成请求时发生冲突。 服务器必须在响应中包含有关冲突的信息。

410 已删除

如果请求的资源已永久删除,服务器就会返回此响应。

411 需要有效长度

服务器不接受不含有效内容长度标头字段的请求。

412 未满足前提条件

服务器未满足请求者在请求中设置的其中一个前提条件。

413 请求实体太大

服务器无法处理请求,因为请求实体过大,超出服务器的处理能力。

414 请求URI太长

请求的 URI(通常为网址)过长,服务器无法处理。

415 不支持的媒体类型

请求的格式不受请求页面的支持。

416 请求范围不符合要求

如果页面无法提供请求的范围,则服务器会返回此状态代码。

417 未满足期望值

服务器未满足 期望 请求标头字段的要求。

服务器错误 5xx

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

500 服务器内部错误

服务器遇到错误,无法完成请求。

501 未实现(Not Implemented)

服务器不具备完成请求的功能。 例如,服务器无法识别请求方法时可能会返回此代码。

502 错误网关

服务器作为网关或代理,从上游服务器收到无效响应。

503 服务不可用

服务器目前无法使用(由于超载或停机维护)。 通常,这只是暂时状态。

504 网关超时

服务器作为网关或代理,但是没有及时从上游服务器收到请求。

505 HTTP版本不支持

服务器不支持请求中所用的 HTTP 协议版本。


常见六种请求方法

  • GET
  • HEAD
  • PUT
  • DELETE
  • POST
  • OPTIONS

但其实我们大部分情况下只用到了GET和POST。如果想设计一个符合RESTful规范的web应用程序,则这六种方法都会用到。不过即使暂时不想涉及REST,了解这六种方法的本质仍然是很有作用的。大家将会发现,原来web也是很简洁明了的。下面依次说明这六种方法。

GET

GET可以说是最常见的了,它本质就是发送一个请求来取得服务器上的某一资源。资源通过一组HTTP头和呈现数据(如HTML文本,或者图片或者视频等)返回给客户端。GET请求中,永远不会包含呈现数据。

HEAD

HEAD 和 GET 本质是一样的,区别在于 HEAD 不含有呈现数据,而仅仅是 HTTP 头信息。有的人可能觉得这个方法没什么用,其实不是这样的。想象一个业务情景:欲判断某个资源是否存在,我们通常使用GET,但这里用HEAD则意义更加明确。

PUT

这个方法比较少见。HTML 表单也不支持这个。本质上来讲, PUT 和 POST 极为相似,都是向服务器发送数据,但它们之间有一个重要区别,PUT通常指定了资源的存放位置,而 POST 则没有,POST 的数据存放位置由服务器自己决定。举个例子:如一个用于提交博文的 URL,/addBlog。如果用 PUT,则提交的 URL 会是像这样的 /addBlog/abc123,其中 abc123 就是这个博文的地址。而如果用 POST,则这个地址会在提交后由服务器告知客户端。目前大部分博客都是这样的。显然,PUT 和 POST 用途是不一样的。具体用哪个还取决于当前的业务场景。

DELETE

删除某一个资源。基本上这个也很少见,不过还是有一些地方比如amazon的S3云服务里面就用的这个方法来删除资源。

POST

向服务器提交数据。这个方法用途广泛,几乎目前所有的提交操作都是靠这个完成。

OPTIONS

这个方法很有趣,但极少使用。它用于获取当前 URL 所支持的方法。若请求成功,则它会在HTTP头中包含一个名为 Allow 的头,值是所支持的方法,如 GET、POST。

其实还有一个 TRACE 方法,不过这个基本上不会用到,这里就不介绍了。以上的六种方法,我们可以跟数据库的CRUD增删改查操作对应起来:

  • CREATE : POST
  • READ : GET
  • UPDATE : PUT
  • DELETE : DELETE

这样一来就实现了HTTP和数据库操作(其实不光是数据库,任何数据如文件图表都是这样)的完美统一,这也是 REST 的精髓之一。

CDSY,CDSY.XYZ
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门
本栏推荐