HTTP报文格式
2. URI 和 URL
URI: 全称为统一资源标识符,使用它可以唯一标识互联网上资源,通常用一个紧凑的字符串用来标示抽象或物理资源
URI 由 URL 和 URN 组成
URL (Uniform Resource Locator) 是URI的子集,是我们俗称的网址,除了确定一个资源,还提供一张定位该资源的主要访问机制
维基百科:
URI可以分为URL、URN或同时具备locators和names特性的一个东西
URN作用就好像一个人的名字,URL就像一个人的地址
URN确定了东西的身份, URL提供了找到它的方式
URL是URI的一种, 但不是所有的URI都是URL
URI和URL最大差别是“访问机制”,
URN是唯一标识的一部分,是身份信息
·
3. HTTP请求方法
HTTP/1.1 常用方法
1. GET
2. POST
3. PUT
4. HEAD
5. DELETE
6. OPTIONS
7. TRACE
8. CONNECT
GET 获取资源
- GET 方法用来请求访问已被URI识别的资源, 指定的资源经服务器端解析后返回响应内容
- GET 方法也可以用来提交表单和其他数据但是只能传输少量信息,而且参数会显示在地址栏上,不安全
POST
POST 方法与GET功能类似, 一般用来传输实体的主体
POST方法的主要目的不是获取响应主体的内容
PUT
从客户端向服务器传送的数据取代指定的文档的内容
PUT方法与POST方法最大的不同是:PUT是幂等的,而POST是不幂等的
因此,我们更多时候将PUT方法用作传输资源
POST添加数据,PUT更新数据,由于PUT没有验证机制,不安全基本不使用
HEAD
类似于GET请求,只不过返回的响应中没有具体的内容,用于获取报头
DELETE
请求服务器删除指定的资源,HTTP1.1/ 和PUT一样没有验证机制,不安全基本不使用
OPTIONS
用来查询针对请求URI指定的资源支持的方法
TRACE/CONNECT
TRACE:
回显服务器收到的请求,主要用于测试或诊断,容易引起跨站追踪
CONNECT:
开启一个客户端与所请求资源之间的双向沟通的通道,创建隧道,用于访问代理服务器
4. HTTP状态码
状态码: 是用以表示网页服务器超文本传输协议响应状态的3位数字代码
分类:
1xx 表示消息。 这一类型的状态码,代表请求已被接受,需要继续处理。这类响应是临时响应,只包含状态行和某些可选的响应头信息,并以空行结束
2xx 表示成功。 这一类型的状态码,代表请求已成功被服务器接收、理解、并接受
3xx 表示重定向。 这类状态码代表需要客户端采取进一步的操作才能完成请求。通常,这些状态码用来重定向,后续的请求地址(重定向目标)在本次响应的Location域中指明
4xx 表示请求错误。 这类的状态吗代表了客户端看起来可能发生了错误,妨碍了服务器的处理。除非响应的是一个head请求,否则服务器就应该返回一个解释当前错误状况的实体,以及这是临时的还是永久性的状况。这些状态吗适用于任何请求方法。浏览器应当向用户展示任何包含在此类错误响应中的实体内容
5xx 表示服务器错误。 这类状态码代表了服务器在处理请求的过程中有错误或者异常状态发生,也有可能是服务器意识到当前的软硬件资源无法完成对请求的处理。除非这是一个head请求,否则服务器应当包含一个解释当前错误状态以及这个状况是临时的还是永久的解释信息实体。浏览器应当向用户展示任何在当前响应中被包含的实体
常见状态码
200 ok 请求成功,请求所希望的响应头和数据体随响应返回
202 accepted 已接收,已接收请求,但未处理完成
206 Partital Content 部分内容,服务器成功处理了部分get请求
301 Moved Permanently 永久移动,请求的资源已被永久的移动到新URI,返回信息会包括新URI,浏览器会自动定向到新URI。今后任何新的请求都应使用新的URI代替
302 Found 临时移动,与301类似。但资源只是临时被移动。客户端应继续使用原有URI
404 Bad Request 客户端请求的语法错误,服务器无法理解
401 Unauthorized 请求要求用户的身份认证
403 Forbidden 服务器理解请求客户端的请求,但是拒绝执行此请求
404 Not Found 服务器无法根据客户端的请求找到资源(网页)
500 internal Server Error 服务器内部错误,无法完成请求
502 Bad Gateway 充当网关或代理的服务器,从远端服务器接收到了一个无效的请求