一、HTTP是什么
描述:Hyper Text Transfer Protocol(超文本传输协议),是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议
特点:
- 是无连接的(每次链接只处理一个请求,处理完成并收到应答时断开链接)
- 时媒体独立的(只要客户端和服务器知道如何处理数据内容,任何类型的数据都可以通过http发送)
- 是无状态的协议(当后续处理需要前面的信息,则必须重传。对事物处理没有记忆能力)
二、HTTP头
描述:HTTP消息头允许客户端和服务器通过request和respone传递附加信息。一个请求头由名称后跟一个 :,冒号后跟具体的值组成
根据上下文不同分类:
- General headers:同时适用于请求和响应消息,最终与消息主题中的传输的数据无关
- Request headers:包含更多有关要获取的资源和客户端本身
- Response headers:包含有关响应的补充信息,入其位置或服务器本身(名称和版本)
- Entity headers:包含有关实体的主体的更多信息(主题长度、MIME类型)
根据代理对其处理方式分类:
- 端到消息头:这类消息头必须被传输到
最终的消息接收者 (请求发服务器或响应的客户端) - 逐跳消息头:这类消息头仅对单次传输连接有意义,不能通过代理或缓存进行重新转发。(只能使用 Connection 来设置逐跳一般头。)
常见请求头: Host :请求的主机和端口号 USER-Agent :浏览器的相关信息 Accept :浏览器可以接收的请求类型 Accept-Language :浏览器可以接收的语言和国家类型 Accept-Encoding :浏览器可以接收的压缩编码的类型 Cookie :浏览器暂存服务器发送的信息 Connecton :Http请求版本的特点 Accept-charset :浏览器可以接收的编码类型
常见响应头: Server :服务器的类型 Date :响应的时间 Content-Type :响应类型 Etag :请求资源的唯一标识符 Last-Modified :服务器最后一次的修改时间 Expires :资源过期时间,提供给浏览器缓存的数据 Age :当代理服务器用自己缓存的实体去响应请求时,用该头部表明该实体从产生到现在经过多长时间了 Cache-Control:max-age=xxxx :设置资源的过期时间。 Content-Encoding :服务器发送的压缩编码格式。 Vary :用来指明内容压缩格式。 Ohc-Response-Time :OHC的响应时间 除此之外还有: Content-Length :服务器发送显示的字节码长度。 Refresh:1,url= “” :1秒后跳转到某页面 Pragma:no-cache : 服务器告诉浏览器,不缓存页面。
三、HTTP请求方式
描述:表明要对给定资源执行的操作
GET :请求一个指定资源的表示形式,用户获取数据 HEAD :与GET类似,但没有响应体,用于获取报头 POST :向指定资源提交数据进行处理请求。会导致在服务器上的状态变化或副作用 PUT :从客户端向服务器传送的数据取代指定的文档的内容 DELETE :请求服务器删除指定页面 CONNECT :HTTP/1.1协议中预留的能将链接改为管道方式的代理服务器 OPTONS :允许客户端查看服务器的性能 TRACE :回显服务器收到的请求,主要用于测试或诊断。 PATCH :是对PUT方法的补充,用来对已知的资源进行局部更新
四、HTTP状态码
信息响应
100 Continue :表明客户端应该继续执行请求 101 Switiching Protocols :切换协议,服务器根据客户端请求切换协议(只能切换更高级的协议)
成功响应
200 OK :请求成功,成功的含义取决于HTTP方法:
- GET:资源已被提取并在消息正文中传输
- HEAD:实体标头位于消息正文中
- PUT / POST:描述动作结果的资源在消息体中传输
- TRACE:消息正文包含服务器收到4的请求消息
201 Created :请求成功,并因此创建了一个新的资源 202 Accepted :已接收请求,但还未处理完成,没有结果(意味着不会有一个异步的响应去表明当前请求的结果,预期另外的进程和服务去处理请求,或者批处理) 203 Non-Authoritative Information :非授权信息,请求成功。但返回的meta信息不在原始分服务器,而是一个副本 204 No Content :无内容,服务器成功处理,但未返回内容。在网页未更新的情况下,可确保浏览器继续显示当前文档 205 Reset Content :重置内容,服务器处理成功。用户终端应重置文档视图。可通过此返回码清除浏览器的表单域 206 Partial Content :当从客户端发送Range范围标头以只请求资源的一部分时,将使用此响应代码。
重定向消息
300 Multiple Choice :请求拥有不止一个的可用响应。用户带来或者用户应当从中选择一个(没有标准化的方法来选择其中一个响应,但是建议使用指向可能性的HTML链接,以便用户可以选择) 301 Moved Permanently :请求已经被永久移动到了新的URL,并在响应中给出了新的URL,浏览器会自动重定向到新的URL。 302 Found :表示请求资源的URL已经暂时更改,客户端应继续使用原有的URL 303 See Other :服务器发送此响应,以指示客户端通过一个GET请求在另一个URL中获取所有请求的资源 304 Not Modified :用于缓存的目的。告诉客户端响应还未被修改,因此客户端可以继续使用相同的缓存版本的响应 305 Use Proxy :在HTTP规范中定义,以指示请求的响应必须被代理访问(出于对代理的带内配置的安全考虑,已被弃用) 306 unused :已被弃用 307 Temporary :临时重定向,与302类似。使用GET请求重定向(服务器发送此响应,以指示客户端使用在前一个 请求中使用的相同方法在另一个URL上获取所请求的资源(在第一个请求中使用了POST,第二个必须使用POST))
客户端错误响应
400 Bad Request :由于被认为是客户端错误,服务器无法或不会处理请求(错误的请求语法,无效的请求消息帧或欺骗性的请求路由) 401 Unauthorized :请求要求用户的身份认证 402 Payment Required :保留,供将来使用(最初的木笔适是用于数字支付系统,但是此状态代码很少使用,并且不存在标准约定) 403 Forbidden :客户端没有防卫内容的权限,英雌服务器拒绝提供请求的资源(与401不同的是服务器知道客户端的身份) 404 Not Found :服务器找不到请求的资源 405 Method Not Allowed :服务器知道该请求方法,但目标资源不支持该方法(如:API不允许调用DELETE来删除资源) 406 Not Acceptable :服务器无法根据客户端请求的内容特性完成请求 407 Proxy Authentication :与401类似,但请求者应当使用代理进行授权 408 Request Time-out :服务器等待客户端发送的请求时间过长,超时 409 Conflict :服务器完成客户端PUT请求时可能返回此代码 410 Gone :客户端请求的资源已经不存在,与404不同的是,如资源以前由现在被拥挤删除了可以使用410代码,网站设计人员可以使用301代码指定新的资源位置 411 Length Required :服务器无法处理,客户端发送的Content-Length头部字段未定义,但服务端需要它 412 Precondition Failed :客户端请求信息的先决条件错误 413 Request Entity Too Large :请求实体大于服务器定义的限制。服务器肯会关闭链接,或在标头字段后返回重试 414 URL Too Long :客户端请求的URL比服务器愿意接收的长度长 415 Unsupported Media Type :服务器不支持请求数据的媒体格式,因此服务器拒绝请求 416 Range Not Satisfiable :无法满足请求中Range标头字段指定的范围(该范围可能超出了目标URL数据的大小) 417 Expectation Failed :此响应代码表示服务器无法曼珠Expect请求标头字段所指示期望 418 I‘m a teapot :服务器拒绝用茶壶煮咖啡(玩笑话) 421 Misdirected Request :请求被定向到无法生成响应的服务器
服务端错误响应
500 Internal Server Error :服务器遇到了不知道如何处理的情况(服务器内部错误) 501 Not Implemented :服务器不支持请求方法(服务器需支持的唯二方法是GET和HEAD) 502 Bad Gateway :此错误响应表明服务器作为网关需要得到一个处理这个请求的响应,但是得到的是一个错误的响应 503 Geteway Timeout :服务器没有准备好处理请求(由于超载或系统维护,服务器暂时的无法处理客户端的请求。延时的长度可包含在服务器的Retry-After头信息中) 504 Gateway Time-out :充当网关或代理的服务器,未及时从远端服务器获取请求 505 HTTP Version not supported :服务器不支持请求的HTTP协议的版本,无法完成处理 506 Variant Also Begotiates :服务器纯在内部配置错误(所选的变体资源被配置未擦奴役透明内容协商本身,因此不是协商过程中的适当终点) 510 Not Extended :服务器需要对请求进行进一步的拓展才能完成请求。
|