http

介绍:http基于tcp/ip通讯来传递数据html
注意事项
- http是无链接:每次链接只处理一个请求,服务器处理完请求后,并收到客户端的应答后,即断开链接;
- http媒体是独立的:只要客户端和服务器端知道如何处理数据类型,任何数据均可以用http传送;
- http无状态:无状态是指协议对于事物处理没得记忆能力;
消息结构
1.http客服端请求包括:请求行、请求头部、空行和请求数据git

2.http响应:状态行、消息报头、空行、响应正文github
http请求方法
- http1.0:get、post和head
- http1.1新增五种请求方式: delete、put、connect、 tarce和options
方法 |
描述 |
get |
向特定资源发起请求 |
post |
向指定资源提交数据进行数据处理。数据包含在请求体中,post请求可能用于新的资源的建立以及已有资源的修改 |
head |
相似与get请求,只不过没有返回体,用于获取包含在响应消息头中的元信息 |
put |
向指定资源上传最新内容 |
delete |
请求服务器删除指定资源 |
trace |
回显服务器收到的请求,主要用于测试或诊断 |
connect |
http1.1中预留给可以将链接改成管道方式的代理服务器 |
options |
返回服务器对特定资源支持的http方法,用来向服务器发送‘*’的请求来测试服务器的功能性 |
常见首部字段含义介绍
首部和方法配合工做,共同决定客户端和服务端能作什么事情api
通用首部
客户端和服务端均可以使用的首部浏览器
首部 |
描述 |
Connection |
容许客户端与服务端指定与请求/响应相链接有关的选项 |
Date |
提供日期和时间标志,说明报文是什么时间建立的 |
MIME-Version |
给出发送给端MIME版本 |
Trailer |
若是报文传输采用分块传输(chunked transfer encoding)方式,就能够用这个首部列出位于报文拖挂部分的首部集合 |
Transfer-Encoding |
告诉接受端为了保证报文的可靠传输,对报文采用了什么编码方式 |
Update |
给出了发送端可能想要“升级”使用新版或协议 |
Via |
显示报文通过的中间节点(代理、网关) |
请求首部
请求报文特有的,为服务器提供一些额外的信息,好比客户端但愿接收到什么样的数据类型缓存
请求的信息性首部
首部 |
描述 |
Client-Ip |
提供运行客户端机器的IP地址 |
From |
提供客户端用户的E-mail地址 |
Host |
给出接收请求服务器的地址和端口号 |
Referer |
提供包含当前请求URL的文档的URL |
UA-color |
提供客户端显示器的显示颜色有关的信息 |
UA-CPU |
给出客户端CPU类型和制造商 |
UA-Disp |
提供了客户端显示器能力有关的信息 |
UA-OS |
提供客客户机器上运行的操做系统和版本 |
UA-Pixels |
提供了客户端显示器的像素信息 |
User-Agent |
将发送请求的应用程序名称告知服务器 |
Accept首部
首部 |
描述 |
Accept |
告诉服务器可以发送哪些媒体类型 |
Accept-Charset |
告诉服务器可以发送哪些字符集 |
Accept-Encoding |
告诉服务器可以发送哪些编码方式 |
Accept-Language |
告诉服务器可以发送哪些语言 |
TE |
告诉服务器可使用哪些扩展传输编码 |
条件请求首部
首部 |
描述 |
Expect |
容许客户端列出请求所要求的服务器行为 |
If-Match |
若是实体标记与文档当前的实体标记相匹配,就获取这份文档 |
If-Modify-Since |
除非在某个指定的日期以后资源被修改过,不然就限制这个请求 |
If-None-Match |
若是实体标记与文档当前的实体不相符,就获取文档 |
If-Range |
容许对文档的某个范围就行条件请求 |
If-Unmodified-Since |
除非在某个指定日期以后资源没有被修改过,不然就限制这个请求 |
Range |
若是服务器支持范围请求,就请求资源的指定范围 |
安全请求受首部
首部 |
描述 |
Authorization |
包含了客户端提供给服务器,以便对其自身进行数据验证 |
Cookie |
客户端用它想服务端发送一个令牌————它并非真正的安全首部,确实隐含了安全功能 |
Cookie2 |
用来讲明请求端支持的Cookie版本 |
代理请求首部
首部 |
描述 |
Max-Forward |
在通往服务器的的路径上,将请求转给其余代理或网关的最大次数————与TARCE方法一块儿使用 |
Proxy-Authorization |
与Authorization首部相同,但这个首部是在与代理进行认证时使用的 |
Proxy-Connection |
与Connection首部相同,但这个首部是在与代理创建链接时使用的 |
响应首部
响应报文有本身的首部集,以遍为客服端提供信息安全
响应的信息性首部
首部 |
描述 |
Age |
(从最初建立开始)响应持续时间 |
Publick |
服务器为其资源支持的请求方法列表 |
Retry-After |
若是资源不可用的话,在此日期或时间重试 |
Server |
服务器应用程序软件的名称和版本 |
Title |
对于html文档来讲,就是HTML文档的源端给出的标题 |
Wraning |
比缘由短语中,更详细的警告报文 |
协商首部
首部 |
描述 |
Accept-Ranges |
对此资源来讲,服务器可接受的数据类型 |
Vary |
服务器查看其余首部 列表,可能会使响应发生变化;也就是说,这是一个首部列表,服务器会根据这些首部的内容挑选出最合适的资源版本发送给客户端 |
安全响应首部
首部 |
描述 |
Proxy-Authenticate |
来自代理对客户端的质询列表 |
Set-Cookie |
不是真正的安全首部,但隐含安全功能;能够在客户端设置一个安全令牌,以遍服务端对客户端进行标志 |
Set-Cookie2 |
与Set-Cookie相似 |
WWW-Authenticate |
来自服务器对客户端的质询列表 |
实体首部
实体首部用于实体主体部分的首部服务器
内容首部
首部 |
描述 |
Content-Base |
解析主体中相对URL时使用的基础URL |
Content-Enconding |
对主题执行的任意编码方式 |
Content-Language |
理解主体时最适宜使用的天然语言 |
Content-Length |
主体的长度或者尺寸 |
Content-Location |
资源实体所处的位置 |
Content-MD5 |
主体的MD5校验和 |
Content-Range |
在整个资源中此实体表示的资源范围 |
Content-Type |
这个主题的对象类型 |
实体缓存首部
首部 |
描述 |
ETag |
与此实体相关的实体标记 |
Expires |
实体不在有效,要从原始的源端再次获取此实体的日期和时间 |
Last-Modified |
这个实体最后一次被修改的日期和时间 |
状态吗
状态码为客户端提供一种理解事务处理结果的快捷方式hexo
状态码 |
缘由短语 |
含义 |
100 |
Continue |
说明收到了客户端的请求初始部分,请客户端继续。发送这个状态码后,服务端在收到请求后必须进行响应 |
101 |
Switching Protocols |
说明服务器端正在根据客户端的指定,将协议切换为Update首部所列的协议 |
客户端发送请求时,这些请求一般都是成功的tcp
状态码 |
缘由短语 |
含义 |
200 |
OK |
请求没有问题,实体的主体部分包含请求的资源 |
201 |
Created |
用于建立服务器的对象请求(好比 PUT),响应的实体部分中应该包含各类引用了以建立的资源的URL,Location首部包含的则是最具体的引用,服务器必须在发送这个状态以前建立好对象 |
202 |
Accepted |
请求已接受,但服务器还未对其执行任何操做。不能保证服务器会完成这个请求,只是意味着接受请求时,它看起来是有效的。服务器应该在实体的主体部分包含对请求状态的描述,或许还应该对请求完成时间的估计(或者包含一个指针,指向能够获取此信息的位置) |
203 |
Non-Authoritative Information |
实体首部包含的信息不是来自于源服务器,而是来自资源的一份副本。若是中间节点上有一份资源副本,但没法或者没有对它所发送的资源有关的元信息(首部)进行验证,就会出现这种状况 |
204 |
No Content |
响应报文中包含若干首部和一个状态行,但没有实体的主体部分。主要用于浏览器不转为新文档的状况下,对其进行更新(好比刷新一个表达页面) |
205 |
Reset Content |
另外一个主要用于浏览器的代码。负责告诉浏览器清除当前页面中的全部html标签 |
206 |
Partail Content |
成功执行一个部分或者Range请求。稍后咱们会看到,客户端能够经过一些特殊的首部来获取部分或范围内的文档————这个状态码就说明范围请求成功响应中必须包括Content-Range、Date和ETag或者Content-Location首部 |
|
|
|
重定向状态码要么告知客户端使用替代位置来访问它们感兴趣的资源,要么提供一个可替代的响应而不是资源的内容。若是资源已被移动,可发送一个重定向状态码和一个可选的Location首部来告知客户端资源已被移走,以及如今在哪里能够找到它
状态码 |
缘由短语 |
含义 |
300 |
Multiple Choices |
客户端请求实际是一个指向多个资源的URL时会返回这个状态码,好比服务器上某个HTML文档有中文和英文版。返回这个代码时会有一个选项列;这样用户就能够选择他但愿使用的一项 |
301 |
Moved Permanently |
在请求URL已被移出时。响应的Loaction首部中包含资源所处在的URL |
302 |
Found |
与301相似;可是客户端应该使用Location首部给出的URL获取临时定位资源。未来的请求任使用老资源 |
303 |
Set Ohter |
告诉客户端应该使用另一个URL来获取资源。新的URL资源位于响应报文Location首部。其主要目的是容许POST请求的响应将客户端定向到某个资源上去 |
304 |
Not Modify |
客户端能够经过所包含的请求首部,使其请求变成有条件的。若是客户端发送一个GET请求,而最近资源未改变的话,就能够用这个状态码来讲明资源未被修改。带有这个状态码的响应不该该包含实体部分 |
305 |
Use Proxy |
用来讲明必须经过一个代理来访问资源。代理的位置由Location来给出。很重要的一点,客户端是相对某个特定资源来解析这条响应的,不能假定全部请求,甚至全部对持有所请求的服务器请求都经过这个代理进行。若是客户端错误的让代理介入某个请求,可能引起破坏性的行为,照成安全漏铜问题 |
306 |
未使用 |
未使用 |
307 |
Temporary Redirect |
与301状态码相似;但客户端应该使用Location首部给出的URL来临时定位资源。未来的资源应该用老的URL |
有时候客户端会发送一个服务器没法处理的东西,好比格式错误的请求报文,或者最多见的时候一个不存在的URL
状态码 |
缘由短语 |
含义 |
400 |
Bad Request |
用于告诉客户端发送了一个错误的请求 |
401 |
Unauthorized |
与适当的首部一块儿返回,在这个首部中请求客户端在获取资源的访问权以前,对本身进行认证 |
402 |
Payment Required |
状态码未使用 |
403 |
Forbidden |
用于说明请求被服务器拒绝。若是服务器说明为何拒绝请求,能够包含实体的主体部分进行描述。但这个状态码一般是服务器不想说明缘由的时候使用 |
404 |
Not Found |
用于说明服务器说明没法找到请求的URL。一般会包含一个实体,以便于客户端应用程序给用户看 |
405 |
Method Not Allowed |
发送的请求中带有所请求的URL不支持的方法时,会使用此状态码。因该在响应中包含Allow首部,以告诉客户端对所请求的资源可使用哪些方法 |
406 |
Not Acceptable |
客户端能够指定参数来讲明它愿意接受什么类型的实体。服务器没有与客户端接受的URL相匹配的资源的时,使用此代码。一般服务器会包含一些首部,以便客户端弄清除为何请求没法知足 |
407 |
Proxy Authentication Required |
与401类似,但用于要求对资源进行认证的代理服务器 |
408 |
Request Timeout |
若是客户端请求的时间太长,服务器能够返回此状态码,并关闭链接。超时时常随服务器不一样而不一样,但一般对全部合法服务器来讲,都是够长的 |
409 |
Conflict |
用于说明请求可能在资源上引起了一些冲突。服务器担忧会引起冲突,能够发送此状态码。响应中应该包含描述冲突的主体 |
410 |
Gone |
与404相似,只是服务器曾经拥有过此资源。主要用于Web站点的维护,这样服务器管理者就能够在资源被移除的状况下通知客户端 |
411 |
Length Required |
服务器要求请求报文中包含Content-length时使用 |
412 |
Precondition Falied |
客户端发送请求条件,且其中一个条件失败的时候使用。客户端包含了Expect首部时发送的就是条件请求 |
413 |
Request Entiny Too large |
客户端发送的实体主体部分比服务器可以或者但愿处理的要大时,使用此状态码 |
414 |
Request Url Too Long |
客户端发送的请求中的请求URL比服务器可以或者但愿处理的要长时,使用此状态码 |
415 |
Unsupported Media Type |
服务端没法理解或支持客户端发送实体的内容类型时,使用此状态码 |
416 |
Request Range Not Satisfiable |
请求报文是请求资源的某个范围,而此范围无效或没法知足时,使用此状态码 |
417 |
Expection Failed |
请求的Expect请求包含了一个指望,但服务器没法知足此指望时,使用此状态码。若是代理或其余中间程序有确切证听说明源服务区器端会为请求产生一个失败指望,就能够发送这个状态码 |
有时候客户端发送一个请求,服务器自身发生错误时
状态码 |
缘由短语 |
含义 |
500 |
Internal Server Error |
服务器遇到一个妨碍它为请求提供服务的错误时,使用此状态码 |
501 |
Not Inplemented |
客户端发送请求时超出服务器的能力范围,使用此状态码 |
502 |
Bad Gateway |
做为代理或网关使用服务器从响应链的下一条链路上收到一条伪响应时,使用此状态码 |
503 |
Service Unavailable |
用来讲明服务器如今没法为请求提供服务,但未来能够。若是服务器知道资源何时可用,能够在响应中包含一个Retry-after首部 |
504 |
Gateway Timeout |
与状态码408相似,只是这里的响应来自一个网关或代理,他们在等待另外一服务器对其请求进行响应时超时了 |
505 |
HTTP Version Not Supported |
服务器收到的请求使用了它没法或不肯支持的协议版本,使用此状态码。有些服务器应用程序选择不支持协议的早早期版本 |
在github上编辑此页
博主我的博客
参考:http协议[http权威指南]