http*

超文本传输协议   是客户端和服务端进行数据传输的一种规则

深入理解HTTP协议 - 知乎 (zhihu.com)

通过http或者https请求的资源统一由 “统一资源定位符”URI来表示

URL统一资源标识符

URL与URI区别  URI属于父类 URL属于URI的子类  URL 是 URI 的一个子集  

URI 表示请求服务器的路径,定义这么一个资源。而 URL 同时说明要如何访问这个资源(http://)。

URL是一种具体的URI,它不仅唯一标识资源,而且还提供了定位该资源的信息。

URI是一种语义上的抽象概念,可以是绝对的,也可以是相对的,而URL则必须提供足够的信息来

定位。

HTTP请求

HTTP请求报文

 

请求方法

GET

获取数据 

POST

提交表单数据 

HEAD

与GET类似但没有响应正文

 

 

PUT

 创建一个新的资源或用请求的有效载荷替换目标资源的表示

PUT /new.html HTTP/1.1
Host: example.com
Content-type: text/html
Content-length: 16

<p>新文件</p>

DELETE

DELETE方法删除指定资源

 DELETE /1.txt HTTP/1.1
 Host: www.example.com
 User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.6)
 Gecko/20050225 Firefox/1.0.1
 Connection: Keep-Alive

OPTIONS

用于描述目标资源的通信选项

 请求字段

协议头字段名说明示例状态
Accept能够接受的回应内容类型(Content-Types)Accept: text/plain常设
Accept-Charset能够接受的字符集Accept-Charset: utf-8常设
Accept-Encoding能够接受的编码方式列表。Accept-Encoding: gzip, deflate常设
Accept-Language能够接受的回应内容的自然语言列表。Accept-Language: en-US常设
Accept-Datetime能够接受的按照时间来表示的版本Accept-Datetime: Thu, 31 May 2007 20:35:00 GMT临时
Authorization用于超文本传输协议的认证的认证信息Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==常设
Cache-Control用来指定在这次的请求/响应链中的所有缓存机制 都必须 遵守的指令Cache-Control: no-cache常设
Connection该浏览器想要优先使用的连接类型Connection: keep-alive``Connection: Upgrade常设
Cookie之前由服务器通过 Set- Cookie (下文详述)发送的一个 超文本传输协议CookieCookie: $Version=1; Skin=new;常设: 标准
Content-Length以 八位字节数组 (8位的字节)表示的请求体的长度Content-Length: 348常设
Content-MD5请求体的内容的二进制 MD5 散列值,以 Base64 编码的结果Content-MD5: Q2hlY2sgSW50ZWdyaXR5IQ==过时的[9]
Content-Type请求体的MIME类型 (用于POST和PUT请求中)Content-Type: application/x-www-form-urlencoded常设
Date发送该消息的日期和时间(按照 RFC 7231 中定义的"超文本传输协议日期"格式来发送)Date: Tue, 15 Nov 1994 08:12:31 GMT常设
Expect表明客户端要求服务器做出特定的行为Expect: 100-continue常设
From发起此请求的用户的邮件地址From: user@example.com常设
Host服务器的域名(用于虚拟主机 ),以及服务器所监听的[传输控制协议)端口号。如果所请求的端口是对应的服务的标准端口,则端口号可被省略。自超文件传输协议版本1.1(HTTP/1.1)开始便是必需字段。Host: zh.fsec.io:80``Host: zh.fsec.io常设
If-Match仅当客户端提供的实体与服务器上对应的实体相匹配时,才进行对应的操作。主要作用时,用作像 PUT 这样的方法中,仅当从用户上次更新某个资源以来,该资源未被修改的情况下,才更新该资源。If-Match: "737060cd8c284d8af7ad3082f209582d"常设
If-Modified-Since允许在对应的内容未被修改的情况下返回304未修改(304 Not ModifiedIf-Modified-Since: Sat, 29 Oct 1994 19:43:31 GMT常设
If-None-Match允许在对应的内容未被修改的情况下返回304未修改( 304 Not Modified ),参考 超文本传输协议的实体标记If-None-Match: "737060cd8c284d8af7ad3082f209582d"常设
If-Range如果该实体未被修改过,则向我发送我所缺少的那一个或多个部分;否则,发送整个新的实体If-Range: "737060cd8c284d8af7ad3082f209582d"常设
If-Unmodified-Since仅当该实体自某个特定时间已来未被修改的情况下,才发送回应。If-Unmodified-Since: Sat, 29 Oct 1994 19:43:31 GMT常设
Max-Forwards限制该消息可被代理及网关转发的次数。Max-Forwards: 10常设
Origin发起一个针对 跨来源资源共享 的请求(要求服务器在回应中加入一个‘访问控制-允许来源’('Access-Control-Allow-Origin')字段)。Origin: http://www.example-social-network.com常设: 标准
Pragma与具体的实现相关,这些字段可能在请求/回应链中的任何时候产生多种效果。Pragma: no-cache常设但不常用
Proxy-Authorization用来向代理进行认证的认证信息。Proxy-Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==常设
Range仅请求某个实体的一部分。字节偏移以0开始。参见字节服务。Range: bytes=500-999常设
Referer表示浏览器所访问的前一个页面,正是那个页面上的某个链接将浏览器带到了当前所请求的这个页面。Referer: http://zh.fsec.io/wiki/Main_Page常设
TE浏览器预期接受的传输编码方式:可使用回应协议头 Transfer-Encoding 字段中的值;另外还可用"trailers"(与"分块 "传输方式相关)这个值来表明浏览器希望在最后一个尺寸为0的块之后还接收到一些额外的字段。TE: trailers, deflate常设
User-Agent浏览器的浏览器身份标识字符串User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:12.0) Gecko/20100101 Firefox/21.0常设
Upgrade要求服务器升级到另一个协议。Upgrade: HTTP/2.0, SHTTP/1.3, IRC/6.9, RTA/x11常设
Via向服务器告知,这个请求是由哪些代理发出的。Via: 1.0 fred, 1.1 example.com (Apache/1.1)常设
Warning一个一般性的警告,告知,在实体内容体中可能存在错误。Warning: 199 Miscellaneous warning常设
X-Forwarded-For识别通过HTTP代理负载均衡方式连接到Web服务器的客户端最原始的IP地址的HTTP请求头字段 一般用于标识请求者的源IP

HTTP响应

 HTTP响应报文

状态码

1xx 消息

服务器收到请求,需要请求者继续执行操作

100 Continue 继续。客户端应继续其请求

101 Switching Protocols 切换协议。服务器根据客户端的请求切换协议。只能切换到更高级的协议,例如,切换到HTTP的新版本协议

2xx 成功 

成功,操作被成功接收并处理

200 OK 请求成功。一般用于GET与POST请求

201 已创建。成功请求并创建了新的资源

202 已接受。已经接受请求,但未处理完成

203     Non-Authoritative Information     非授权信息。请求成功。但返回的meta信息不在原始的服务器,而是一个副本

204     No Content     无内容。服务器成功处理,但未返回内容。在未更新网页的情况下,可确保浏览器继续显示当前文档
205     Reset Content     重置内容。服务器处理成功,用户终端(例如:浏览器)应重置文档视图。可通过此返回码清除浏览器的表单域
206     Partial Content     部分内容。服务器成功处理了部分GET请求

3xx 重定向

重定向,需要进一步的操作以完成请求

300 多种选择。请求的资源可包括多个位置,相应可返回一个资源特征与地址的列表用于用户终端(例如:浏览器)选择

301 Moved Permanently 永久移动。请求的资源已被永久的移动到新URI,返回信息会包括新的URI,浏览器会自动定向到新URI。今后任何新的请求都应使用新的URI代替

302 Found

临时移动。与301类似。但资源只是临时被移动。客户端应继续使用原有URI

303     See Other     查看其它地址。与301类似。使用GET和POST请求查看
304     Not Modified     未修改。所请求的资源未修改,服务器返回此状态码时,不会返回任何资源。客户端通常会缓存访问过的资源,通过提供一个头信息指出客户端希望只返回在指定日期之后修改的资源
305     Use Proxy     使用代理。所请求的资源必须通过代理访问
306     Unused     已经被废弃的HTTP状态码
307     Temporary Redirect     临时重定向。与302类似。使用GET请求重定向

4xx 客户端错误

客户端错误,请求包含语法错误或无法完成请求

400 Bad Request 客户端请求的语法错误,服务器无法理解*

401 Unauthorized 请求要求用户的身份认证

402     Payment Required     保留,将来使用

403     Forbidden     服务器理解请求客户端的请求,但是拒绝执行此请求

404     Not Found     服务器无法根据客户端的请求找到资源(网页)。通过此代码,网站设计人员可设置"您所请求的资源无法找到"的个性页面**

405     Method Not Allowed     客户端请求中的方法被禁止

406     Not Acceptable     服务器无法根据客户端请求的内容特性完成请求
407     Proxy Authentication Required     请求要求代理的身份认证,与401类似,但请求者应当使用代理进行授权
408     Request Time-out     服务器等待客户端发送的请求时间过长,超时
409     Conflict     服务器完成客户端的 PUT 请求时可能返回此代码,服务器处理请求时发生了冲突
410     Gone     客户端请求的资源已经不存在。410不同于404,如果资源以前有现在被永久删除了可使用410代码,网站设计人员可通过301代码指定资源的新位置
411     Length Required     服务器无法处理客户端发送的不带Content-Length的请求信息
412     Precondition Failed     客户端请求信息的先决条件错误
413     Request Entity Too Large     由于请求的实体过大,服务器无法处理,因此拒绝请求。为防止客户端的连续请求,服务器可能会关闭连接。如果只是服务器暂时无法处理,则会包含一个Retry-After的响应信息
414     Request-URI Too Large     请求的URI过长(URI通常为网址),服务器无法处理
415     Unsupported Media Type     服务器无法处理请求附带的媒体格式
416     Requested range not satisfiable     客户端请求的范围无效
417     Expectation Failed     服务器无法满足Expect的请求头信息

5xx服务器错误

服务器在处理请求的过程中发生了错误

500     Internal Server Error     服务器内部错误,无法完成请求

501     Not Implemented     服务器不支持请求的功能,无法完成请求

502     Bad Gateway     作为网关或者代理工作的服务器尝试执行请求时,从远程服务器接收到了一个无效的响应

503     Service Unavailable     由于超载或系统维护,服务器暂时的无法处理客户端的请求。延时的长度可包含在服务器的Retry-After头信息中

504     Gateway Time-out     充当网关或代理的服务器,未及时从远端服务器获取请求
505     HTTP Version not supported 服务器不支持请求的HTTP协议的版本,无法完成处理

响应字段

字段名说明例子状态
Access-Control-Allow-Origin指定哪些网站可参与到跨源资源共享过程中Access-Control-Allow-Origin: *临时
Accept-Patch指定服务器支持的文件格式类型。Accept-Patch: text/example;charset=utf-8常设
Accept-Ranges这个服务器支持哪些种类的部分内容范围Accept-Ranges: bytes常设
Age这个对象在代理缓存中存在的时间,以秒为单位Age: 12常设
Allow对于特定资源有效的动作。针对HTTP/405这一错误代码而使用Allow: GET, HEAD常设
Cache-Control向从服务器直到客户端在内的所有缓存机制告知,它们是否可以缓存这个对象。其单位为秒Cache-Control: max-age=3600常设
Connection针对该连接所预期的选项Connection: close常设
Content-Disposition一个可以让客户端下载文件并建议文件名的头部。文件名需要用双引号包裹。Content-Disposition: attachment; filename="fname.ext"常设
Content-Encoding在数据上使用的编码类型。参考 超文本传输协议压缩 。Content-Encoding: gzip常设
Content-Language内容所使用的语言Content-Language: da常设
Content-Length回应消息体的长度,以 字节 (8位为一字节)为单位Content-Length: 348常设
Content-Location所返回的数据的一个候选位置Content-Location: /index.htm常设
Content-MD5回应内容的二进制 MD5 散列,以 Base64 方式编码Content-MD5: Q2hlY2sgSW50ZWdyaXR5IQ==过时的
Content-Range这条部分消息是属于某条完整消息的哪个部分Content-Range: bytes 21010-47021/47022常设
Content-Type当前内容的MIME类型Content-Type: text/html; charset=utf-8常设
Date此条消息被发送时的日期和时间(按照 RFC 7231 中定义的“超文本传输协议日期”格式来表示)Date: Tue, 15 Nov 1994 08:12:31 GMT常设
ETag对于某个资源的某个特定版本的一个标识符,通常是一个 消息散列ETag: "737060cd8c284d8af7ad3082f209582d"常设
Expires指定一个日期/时间,超过该时间则认为此回应已经过期Expires: Thu, 01 Dec 1994 16:00:00 GMT常设: 标准
Last-Modified所请求的对象的最后修改日期(按照 RFC 7231 中定义的“超文本传输协议日期”格式来表示)Last-Modified: Tue, 15 Nov 1994 12:45:26 GMT常设
Link用来表达与另一个资源之间的类型关系,此处所说的类型关系是在 RFC 5988 中定义的Link: </feed>; rel="alternate"常设
Location用来 进行重定向,或者在创建了某个新资源时使用。Location: http://www.w3.org/pub/WWW/People.html常设
P3P用于支持设置P3P策略,标准格式为“P3P:CP="your_compact_policy"”。然而P3P规范并不成功,[33]大部分现代浏览器没有完整实现该功能,而大量网站也将该值设为假值,从而足以用来欺骗浏览器的P3P插件功能并授权给第三方Cookies。P3P: CP="This is not a P3P policy! ``See http://www.google.com/support/accounts/bin/answer.py?hl=en&answer=151657 for more info."常设
Pragma与具体的实现相关,这些字段可能在请求/回应链中的任何时候产生多种效果。Pragma: no-cache常设
Proxy-Authenticate要求在访问代理时提供身份认证信息。Proxy-Authenticate: Basic常设
Public-Key-Pins用于缓解中间人攻击,声明网站认证使用的传输层安全协议证书的散列值Public-Key-Pins: max-age=2592000; pin-sha256="E9CZ9INDbd+2eRQozYqqbQ2yXLVKB9+xcprMF+44U1g=";常设
Refresh用于设定可定时的重定向跳转。右边例子设定了5秒后跳转至“http://www.w3.org/pub/WWW/People.html”。Refresh: 5; url=http://www.w3.org/pub/WWW/People.html专利并非标准Netscape实现的扩展,但大部分网页浏览器也支持。
Retry-After如果某个实体临时不可用,则,此协议头用来告知客户端日后重试。其值可以是一个特定的时间段(以秒为单位)或一个超文本传输协议日期。Example 1: Retry-After: 120Example 2: Retry-After: Fri, 07 Nov 2014 23:59:59 GMT常设
Server服务器的名字Server: Apache/2.4.1 (Unix)常设
Set-CookieHTTP cookieSet-Cookie: UserID=JohnDoe; Max-Age=3600; Version=1常设: 标准
Status通用网关接口 协议头字段,用来说明当前这个超文本传输协议回应的 状态 。普通的超文本传输协议回应,会使用单独的“状态行”("Status-Line")作为替代,这一点是在 RFC 7230 中定义的。Status: 200 OKNot listed as a registered field name
Strict-Transport-SecurityHTTP 严格传输安全这一头部告知客户端缓存这一强制 HTTPS 策略的时间,以及这一策略是否适用于其子域名。Strict-Transport-Security: max-age=16070400; includeSubDomains常设: 标准
Trailer这个头部数值指示了在这一系列头部信息由由分块传输编码编码。Trailer: Max-Forwards常设
Transfer-Encoding用来将实体安全地传输给用户的编码形式。当前定义的方法包括:分块(chunked)、compress、deflate、gzip和identity。Transfer-Encoding: chunked常设
Upgrade要求客户端升级到另一个协议。Upgrade: HTTP/2.0, SHTTP/1.3, IRC/6.9, RTA/x11常设
Vary告知下游的代理服务器,应当如何对未来的请求协议头进行匹配,以决定是否可使用已缓存的回应内容而不是重新从原始服务器请求新的内容。Vary: *常设
Via告知代理服务器的客户端,当前回应是通过什么途径发送的。Via: 1.0 fred, 1.1 example.com (Apache/1.1)常设
Warning一般性的警告,告知在实体内容体中可能存在错误。Warning: 199 Miscellaneous warning常设
WWW-Authenticate表明在请求获取这个实体时应当使用的认证模式。WWW-Authenticate: Basic常设
X-Frame-Options点击劫持保护:deny:该页面不允许在 frame 中展示,即使是同域名内。sameorigin:该页面允许同域名内在 frame 中展示。allow-from *uri*:该页面允许在指定uri的 frame 中展示。allowall:允许任意位置的frame显示,非标准值。X-Frame-Options: deny过时的
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值