HTTP 协议是 Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网 (WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。

HTTP特点

  • 支持客户/服务器模式
  • 简单快速
  • 灵活,支持各种类型的数据
  • 无连接
  • 无状态

    URI与URL

    HTTP 使用统一资源标识符(Uniform Resource Identifiers, URI)来传输数据和建立连接。
    URL,全称是 UniformResourceLocator, 中文叫统一资源定位符,是互联网上用来标识某一处资源的地址。URL是一种特殊类型的URI,包含了用于查找某个资源的**足够的信息**。

一个完整的URL

包括以下几部分:
http://www.enjoyedu.com:8080/news/index.asp?boardID=5&ID=24618&page=1#name

1.协议部分

该 URL 的协议部分为“http:”,这代表网页使用的是 HTTP 协议。在 Internet 中可以使用多种协议,如 HTTP,FTP 等等本例中使用的是 HTTP 协议。在”HTTP”后面的“//” 为分隔符

2.域名部分

该 URL 的域名部分为“www.enjoyedu.com”。一个 URL 中,也可以使用 IP 地址作为域名使用 3.端口部分:跟在域名后面的是端口,域名和端口之间使用“:”作为分隔符。端口不是 一个 URL 必须的部分,如果省略端口部分,将采用默认端口。

4.虚拟目录部分

从域名后的第一个“/”开始到最后一个“/”为止,是虚拟目录部分。 虚拟目录也不是一个 URL 必须的部分。本例中的虚拟目录是“/news/”

5.文件名部分

从域名后的最后一个“/”开始到“?”为止,是文件名部分,如果没有“?”,则是从域名后的最后一个“/”开始到“#”为止,是文件部分,如果没有“?”和 “#”,那么从域名后的最后一个“/”开始到结束,都是文件名部分。本例中的文件名是 “index.asp”。文件名部分也不是一个 URL 必须的部分,如果省略该部分,则使用默认的文件名

6.参数部分

从“?”开始到“#”为止之间的部分为参数部分,又称搜索部分、查询部分。本例中的参数部分为“boardID=5&ID=24618&page=1”。参数可以允许有多个参数,参数与参数之间用“&”作为分隔符。 7.锚部分:从“#”开始到最后,都是锚部分。本例中的锚部分是“name”。锚部分也 不是一个URL必须的部分。

常见的 HTTP 相应状态码

  • 1XX: 指示信息-请求已接收,继续处理
  • 200:请求被正常处理
  • 204:请求被受理但没有资源可以返回
  • 206:客户端只是请求资源的一部分,服务器只对请求的部分资源执行 GET 方法,相应报文中通过 Content-Range 指定范围的资源。
  • 301:永久性重定向
  • 302:临时重定向
  • 303:与 302 状态码有相似功能,只是它希望客户端在请求一个 URI 的时候,能通过 GET 方法重定向到另一个 URI 上
  • 304:发送附带条件的请求时,条件不满足时返回,与重定向无关
  • 307:临时重定向,与 302 类似,只是强制要求使用 POST 方法
  • 400:请求报文语法有误,服务器无法识别
  • 401**:请求需要认证 (认证失败)**
  • 403**:请求的对应资源禁止被访问 (权限不够)**
  • 404:服务器无法找到对应资源
  • 500:服务器内部错误
  • 503:服务器正忙

    常用的 HTTP 方法有哪些?

  • GET: 用于请求访问已经被 URI(统一资源标识符)识别的资源,可以通过 URL 传参给 服务器

  • POST:用于传输信息给服务器,主要功能与 GET 方法类似,但一般推荐使用 POST 方式。
  • PUT: 传输文件,报文主体中包含文件内容,保存到对应 URI 位置。
  • HEAD: 获得报文首部,与 GET 方法类似,只是不返回报文主体,一般用于验证 URI 是否有效。
  • DELETE:删除文件,与 PUT 方法相反,删除对应 URI 位置的文件。
  • OPTIONS:查询相应 URI 支持的 HTTP 方法