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:服务器内部错误
-
常用的 HTTP 方法有哪些?
GET: 用于请求访问已经被 URI(统一资源标识符)识别的资源,可以通过 URL 传参给 服务器
- POST:用于传输信息给服务器,主要功能与 GET 方法类似,但一般推荐使用 POST 方式。
- PUT: 传输文件,报文主体中包含文件内容,保存到对应 URI 位置。
- HEAD: 获得报文首部,与 GET 方法类似,只是不返回报文主体,一般用于验证 URI 是否有效。
- DELETE:删除文件,与 PUT 方法相反,删除对应 URI 位置的文件。
- OPTIONS:查询相应 URI 支持的 HTTP 方法