Http介绍

2017-12-05  本文已影响0人  蜻蜓小子

什么是Http协议

超文本传输协议(英文:HyperText Transfer Protocol,缩写:HTTP)是互联网上应用最为广泛的一种网络协议。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。其实,我们平时浏览的网页就是基于 HTTP 协议呈现的,HTTP 协议是互联网应用中,客户端(浏览器)与服务器之间进行数据通信的一种协议。协议中规定了客户端应该按照什么格式给服务器发送请求,同时也约定了服务端返回的响应结果应该是什么格式。

Http请求结构

HTTP请求由3部分组成,分别是请求行、请求首部、请求体,首部和请求体是可选的,并不是每个请求都需要的。

HTTP请求方法

根据HTTP标准,HTTP请求可以使用多种请求方法。
HTTP1.0定义了三种请求方法: GET, POST 和 HEAD方法。
HTTP1.1新增了五种请求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法。


HTTP请求方法

URL概述

统一资源定位符(URL,英语 Uniform / Universal Resource Locator的缩写)是用于完整地描述Internet上网页和其他资源的地址的一种标识方法。
URL格式:schema://host[:port#]/path/…/[?query-string][#anchor]

常用的请求报头

报头信息.png
  eg:
  Accept:image/gif,表明客户端希望接受GIF图象格式的资源;
  Accept:text/html,表明客户端希望接受html文本。
  Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
  意思:浏览器支持的 MIME 类型分别是 text/html、application/xhtml+xml、application/xml 和 */*,优先顺序是它们从左到右的排列顺序。

  Text:用于标准化地表示的文本信息,文本消息可以是多种字符集和或者多种格式的;
  Application:用于传输应用程序数据或者二进制数据;
image.png
  eg:
  Accept-Language:zh-cn

如果请求消息中没有设置这个报头域,服务器假定客户端对各种语言都可以接受。

  eg:
  Accept-Charset:iso-8859-1,gb2312
  ISO8859-1,通常叫做Latin-1。Latin-1包括了书写所有西方欧洲语言不可缺少的附加字符;
  gb2312是标准中文字符集;
  UTF-8 是 UNICODE 的一种变长字符编码,可以解决多种语言文本显示问题,从而实现应用国际化和本地化。
  如果在请求消息中没有设置这个域,缺省是任何字符集都可以接受。

Http响应结构

服务端接收请求并处理后,返回响应内容给客户端,同样地,响应内容也必须遵循固定的格式浏览器才能正确解析。HTTP 响应也由3部分组成,分别是:响应行、响应首部、响应体,与HTTP的请求格式是相对应的。

所有HTTP响应的第一行都是状态行,依次是当前HTTP版本号,3位数字组成的状态代码,以及描述状态的短语,彼此由空格分隔。 状态代码的第一个数字代表当前响应的类型

1xx消息——请求已被服务器接收,继续处理
2xx成功——请求已成功被服务器接收、理解、并接受
3xx重定向——需要后续操作才能完成这一请求
4xx请求错误——请求含有词法错误或者无法被执行
5xx服务器错误——服务器在处理某个正确请求时发生错误

常见状态代码、状态描述、说明:
◆200 (OK): 找到了该资源,并且一切正常。
◆301(Moved Permanently): 客户请求的文档在其他地方,新的URL在Location头中给出,浏览器应该自动地访问新的URL。
◆302 (Found): 类似于301,但新的URL应该被视为临时性的替代,而不是永久性的。
◆304 (NOT MODIFIED): 该资源在上次请求之后没有任何修改。这通常用于浏览器的缓存机制。
◆400 (Bad Request): 请求出现语法错误。
◆403 (FORBIDDEN): 客户端未能获得授权。这通常是在401之后输入了不正确的用户名或密码。
◆404 (NOT FOUND): 在指定的位置不存在所申请的资源。
◆500 (Internal Server Error): 服务器遇到了意料不到的情况,不能完成客户的请求
◆503 (Service Unavailable): 服务器由于维护或者负载过重未能应答。例如,Servlet可能在数据库连接池已满的情况下返回503。服务器返回503时可以提供一个Retry-After头
详细的状态码信息:http://www.runoob.com/http/http-status-codes.html

延伸阅读
《图解HTTP》
《HTTP权威指南》
HTTP Request:https://www.w3.org/Protocols/rfc2616/rfc2616-sec5.html#sec5

上一篇 下一篇

猜你喜欢

热点阅读