Http 请求头 响应体 详解
Referrer Policy 是什么?
我们知道,在页面引入图片、JS 等资源,或者从一个页面跳到另一个页面,都会产生新的 HTTP 请求,
浏览器一般都会给这些请求头加上表示来源的 Referrer 字段。Referrer 在分析用户来源时很有用,有着广泛的使用。
属性介绍:
新的 Referrer Policy 规定了五种 Referrer 策略:No Referrer、No Referrer When Downgrade、Origin Only、Origin When Cross-origin、和 Unsafe URL。
之前就存在的三种策略:never、default 和 always,在新标准里换了个名称。他们的对应关系如下:
策略名称 | 属性值(新) | 属性值(旧) |
---|---|---|
No Referrer | no-referrer | never |
No Referrer When Downgrade | no-referrer-when-downgrade | default |
Origin Only | origin | - |
Origin When Cross-origin | origin-when-crossorigin | - |
Unsafe URL | unsafe-url | always |
- No Referrer :
- 任何情况下都不发送 Referrer 信息;
- No Referrer When Downgrade :
- 仅当发生协议降级(如 HTTPS 页面引入 HTTP 资源,从 HTTPS 页面跳到 HTTP 等)时不发送 Referrer 信息。
- 这个规则是现在大部分浏览器默认所采用的;
- Origin Only
- :发送只包含 host 部分的 Referrer。启用这个规则,无论是否发生协议降级,
- 无论是本站链接还是站外链接,都会发送 Referrer 信息,但是只包含协议 + host 部分(不包含具体的路径及参数等信息);
- Origin When Cross-origin
- :仅在发生跨域访问时发送只包含 host 的 Referrer,同域下还是完整的。
- 它与Origin Only的区别是多判断了是否Cross-origin。需要注意的是协议、域名和端口都一致,才会被浏览器认为是同域;
- Unsafe URL :
- 无论是否发生协议降级,无论是本站链接还是站外链接,统统都发送 Referrer 信息。正如其名,这是最宽松而最不安全的策略;
使用:
知道了有哪些策略可以用,还需要了解怎么用。这里介绍指定 Referrer Policy 的三种方式:
1.CSP 响应头
CSP(Content Security Policy),是一个跟页面内容安全有关的规范。
在 HTTP 中通过响应头中的Content-Security-Policy字段来告诉浏览器当前页面要使用何种 CSP 策略。我之前写过一篇Content Security Policy 介绍,
可以先看看。现在 CSP 还可以通过referrer指令和五种可选的指令值,来指定 Referrer 策略,格式非常简单:
- Content-Security-Policy: referrer no-referrer|no-referrer-when-downgrade|origin|origin-when-cross-origin|unsafe-url;
注:根据文档,通过 CSP 头部设置Origin When Cross-origin策略时,指令值应该用origin-when-cross-origin,
这跟前面的表格里的origin-when-crossorigin有差异。实际上经过我的测试,Chrome 42 只支持origin-when-crossorigin,
后续会不会变还不知道,建议大家使用时,自己先测一下。
CSP 的指令和指令值之间以空格分割,多个指令之间用英文分号分割。
2. <meta> 标签
通过<meta>标签也可以指定 Referrer 策略,同样很简单:
- <meta name="referrer" content="no-referrer|no-referrer-when-downgrade|origin|origin-when-crossorigin|unsafe-url">
需要注意的是,<meta>只能放在<head>...</head>之间,如果出现的位置不对会被忽略。同样,如果没有给它定义content属性,或者content属性为空,也会被忽略。如果content属性不是合法的取值,浏览器会自动选择no-referrer这种最严格的策略。
通过给<a>标签增加referrer属性也可以指定 Referrer 策略,格式如下:
- <a href="http://example.com" referrer="no-referrer|origin|unsafe-url">xxx</a>
这种方式作用的只是这一个链接。并且,<a>标签可用的 Referrer 策略只有三种:不传、只传 host 和都传。
另外,这样针对单个链接设置的策略优先级比 CSP 和<meta>要高。
另外再重复一遍,现阶段的浏览器还保留了对 never、default 和 always 的支持,但是已经不推荐使用了。
可以看到,通过新的 Referrer 策略,网站所有者可以选择更高的安全级别来保证用户隐私不被泄露;
也可以选择更低的安全级别来获得一些便利,相比之前只能由浏览器默认策略一刀切,确实灵活了不少。
Accept
Accept是什么?
Accept代表发送端(客户端)希望接受的数据类型
- 1.Accept属于请求头, Content-Type属于实体头。
- Http报头分为通用报头,请求报头,响应报头和实体报头。
- 请求方的http报头结构:通用报头|请求报头|实体报头
- 响应方的http报头结构:通用报头|响应报头|实体报头
比如:Accept:text/xml(application/json);
代表客户端希望接受的数据类型是xml(json )类型
Content-Type代表发送端(客户端|服务器)发送的实体数据的数据类型。
比如:Content-Type:text/html(application/json) ;
代表发送端发送的数据格式是html(json)。
二者合起来,
Accept:text/xml;
Content-Type:text/html
即代表希望接受的数据类型是xml格式,本次请求发送的数据的数据格式是html。
如果accept指定的类型和response返回的类型不一致,会出现406,not acceptable错误,对应到java spring工程,就是
- HttpHeaders headers = new HttpHeaders();
- headers.add("Accept", MediaType.APPLICATION_JSON_UTF8_VALUE.toString());
如果head头里加了accept,那么@RequestMapping里的produces = "*/*"或produces = "application/json"
Accept-Encoding
Accept-Encoding 是浏览器发给服务器,声明浏览器支持的编码类型的
常见的有
- Accept-Encoding: compress, gzip //支持compress 和gzip类型(压缩)
- Accept-Encoding: //默认是identity
- Accept-Encoding: * //支持所有类型
- Accept-Encoding: compress;q=0.5, gzip;q=1.0 //按顺序支持 gzip , compress
- Accept-Encoding: gzip;q=1.0, identity; q=0.5, *;q=0 // 按顺序支持 gzip , identity
- 服务器返回的对应的类型编码header是 content-encoding
- 服务器处理accept-encoding的规则如下所示
- 1. 如果服务器可以返回定义在Accept-Encoding 中的任何一种Encoding类型, 那么处理成功(除非q的值等于0, 等于0代表不可接受)
- 2. * 代表任意一种Encoding类型 (除了在Accept-Encoding中显示定义的类型)
- 3.如果有多个Encoding同时匹配, 按照q值顺序排列
- 4. identity总是可被接受的encoding类型(除非显示的标记这个类型q=0) ,
- 如果Accept-Encoding的值是空 那么只有identity是会被接受的类型
- 如果Accept-Encoding中的所有类型服务器都没发返回, 那么应该返回406错误给客户端
- 如果request中没有Accept-Encoding 那么服务器会假设所有的Encoding都是可以被接受的,
- 如果Accept-Encoding中有identity 那么应该优先返回identity (除非有q值的定义,或者你认为另外一种类型是更有意义的)
- 注意:
- 如果服务器不支持identity 并且浏览器没有发送Accept-Encoding,那么服务器应该倾向于使用HTTP1.0中的 "gzip" and "compress" ,
服务器可能按照客户端类型 发送更适合的encoding类型
- 大部分HTTP1.0的客户端无法处理q值
- Cache-Control
Cache-Control指定了请求和响应遵循的缓存机制。好的缓存机制可以减少对网络带宽的占用,可以提高访问速度,提高用户的体验,还可以减轻服务器的负担。
Cache-Control主要有以下几种类型:
(1) 请求Request:
[1] no-cache ---- 不要读取缓存中的文件,要求向WEB服务器重新请求
[2] no-store ---- 请求和响应都禁止被缓存
[2] max-age: ---- 表示当访问此网页后的max-age秒内再次访问不会去服务器请求,其功能与Expires类似,
只是Expires是根据某个特定日期值做比较。一但缓存者自身的时间不准确.则结果可能就是错误的,
而max-age,显然无此问题.。Max-age的优先级也是高于Expires的。
[3] max-stale ---- 允许读取过期时间必须小于max-stale 值的缓存对象。
[4] min-fresh ---- 接受其max-age生命期大于其当前时间 跟 min-fresh 值之和的缓存对象
[5] only-if-cached ---- 告知缓存者,我希望内容来自缓存,我并不关心被缓存响应,是否是新鲜的.
[6] no-transform ---- 告知代理,不要更改媒体类型,比如jpg,被你改成png.
(2) 响应Response:
[1] public ---- 数据内容皆被储存起来,就连有密码保护的网页也储存,安全性很低
[2] private ---- 数据内容只能被储存到私有的cache,仅对某个用户有效,不能共享
[3] no-cache ---- 可以缓存,但是只有在跟WEB服务器验证了其有效后,才能返回给客户端
[4] no-store ---- 请求和响应都禁止被缓存
[4] max-age: ----- 本响应包含的对象的过期时间
[5] Must-revalidate ---- 如果缓存过期了,会再次和原来的服务器确定是否为最新数据,而不是和中间的proxy
[6] max-stale ---- 允许读取过期时间必须小于max-stale 值的缓存对象。
[7] proxy-revalidate ---- 与Must-revalidate类似,区别在于:proxy-revalidate要排除掉用户代理的缓存的。即其规则并不应用于用户代理的本地缓存上。
[8] s-maxage ---- 与max-age的唯一区别是,s-maxage仅仅应用于共享缓存.而不应用于用户代理的本地缓存等针对单用户的缓存. 另外,s-maxage的优先级要高于max-age.
[9] no-transform ---- 告知代理,不要更改媒体类型,比如jpg,被你改成png.
- Connection
HTTP持久连接允许在事务处理结束之后将TCP连接保持在打开状态,以便为未来的HTTP请求重用现存的连接。
在事务处理结束之后仍然保持在打开状态的TCP连接被称为持久连接。持久连接会在不同事务之间保持打开状态,直到客户端或服务器决定将其关闭为止。
优点:重用已对目标服务器打开的空闲持久连接,可以避开缓慢的连接建立阶段,更快速地进行数据的传输。
缺点:管理不当可能会积累出大量的空闲连接,耗费本地客户端以及远程服务器上的资源。
非持久连接会在每个事务处理结束之后关闭。
HTTP持久连接实现手段是HTTP首部添加Connection字段
- Connection: keep-alive , 开启HTTP持久连接,HTTP 1.1默认值
- Connection: close , 关闭HTTP持久连接,HTTP 1.0默认值
HTTP keep-alive与TCP keep-alive区别
- HTTP keep-alive参数为了减少TCP连接和断开而提出的一种解决方案,HTTP持久连接即TCP长连接。
- TCP keep-alive参数主要为探测长连接的存活状况,即TCP保活功能。
本文将对HTTP首部Connction实践,对比keep-alive/close两个值在HTTP和TCP的表现情况。后端使用Spring boot+Java,前端使用HTML+CSS。
HTTP Request首部Connection
如果Client希望HTTP使用持久连接,在Request首部指定Connection: keep-alive
,否则指定Connection: close
Origin
HTTP 协议中的 Origin Header 存在于请求中,用于指明当前请求来自于哪个站点。
Pragma
pragma是http/1.1之前版本的历史遗留字段,仅作为与http的向后兼容而定义。
Referer
HTTP Referer是header的一部分,当浏览器向web服务器发送请求的时候,一般会带上Referer,
告诉服务器该网页是从哪个页面链接过来的,服务器因此可以获得一些信息用于处理。
User-Agent
User-Agent 首部包含了一个特征字符串,用来让网络协议的对端来识别发起请求的用户代理软件的应用类型、操作系统、软件开发商以及版本号。
资源可支持的HTTP方法
Content-Type
Content-Type(内容类型),一般是指网页中存在的 Content-Type,用于定义网络文件的类型和网页的编码,决定浏览器将以什么形式、什么编码读取这个文件
- 常见的媒体格式类型如下:
- text/html : HTML格式
- text/plain :纯文本格式
- text/xml : XML格式
- image/gif :gif图片格式
- image/jpeg :jpg图片格式
- image/png:png图片格式
- 以application开头的媒体格式类型:
- application/xhtml+xml :XHTML格式
- application/xml: XML数据格式
- application/atom+xml :Atom XML聚合格式
- application/json: JSON数据格式
- application/pdf:pdf格式
- application/msword : Word文档格式
- application/octet-stream : 二进制流数据(如常见的文件下载)
- application/x-www-form-urlencoded : <form encType=””>中默认的encType,
form表单数据被编码为key/value格式发送到服务器(表单默认的提交数据的格式)- 另外一种常见的媒体格式是上传文件之时使用的:
- multipart/form-data : 需要在表单中进行文件上传时,就需要使用该格式
- 文件扩展名 Content-Type(Mime-Type) 文件扩展名 Content-Type(Mime-Type)
- .*( 二进制流,不知道下载文件类型) application/octet-stream .tif image/tiff
- .001 application/x-001 .301 application/x-301
- .323 text/h323 .906 application/x-906
- .907 drawing/907 .a11 application/x-a11
- .acp audio/x-mei-aac .ai application/postscript
- .aif audio/aiff .aifc audio/aiff
- .aiff audio/aiff .anv application/x-anv
- .asa text/asa .asf video/x-ms-asf
- .asp text/asp .asx video/x-ms-asf
- .au audio/basic .avi video/avi
- .awf application/vnd.adobe.workflow .biz text/xml
- .bmp application/x-bmp .bot application/x-bot
- .c4t application/x-c4t .c90 application/x-c90
- .cal application/x-cals .cat application/vnd.ms-pki.seccat
- .cdf application/x-netcdf .cdr application/x-cdr
- .cel application/x-cel .cer application/x-x509-ca-cert
- .cg4 application/x-g4 .cgm application/x-cgm
- .cit application/x-cit .class java/*
- .cml text/xml .cmp application/x-cmp
- .cmx application/x-cmx .cot application/x-cot
- .crl application/pkix-crl .crt application/x-x509-ca-cert
- .csi application/x-csi .css text/css
- .cut application/x-cut .dbf application/x-dbf
- .dbm application/x-dbm .dbx application/x-dbx
- .dcd text/xml .dcx application/x-dcx
- .der application/x-x509-ca-cert .dgn application/x-dgn
- .dib application/x-dib .dll application/x-msdownload
- .doc application/msword .dot application/msword
- .drw application/x-drw .dtd text/xml
- .dwf Model/vnd.dwf .dwf application/x-dwf
- .dwg application/x-dwg .dxb application/x-dxb
- .dxf application/x-dxf .edn application/vnd.adobe.edn
- .emf application/x-emf .eml message/rfc822
- .ent text/xml .epi application/x-epi
- .eps application/x-ps .eps application/postscript
- .etd application/x-ebx .exe application/x-msdownload
- .fax image/fax .fdf application/vnd.fdf
- .fif application/fractals .fo text/xml
- .frm application/x-frm .g4 application/x-g4
- .gbr application/x-gbr . application/x-
- .gif image/gif .gl2 application/x-gl2
- .gp4 application/x-gp4 .hgl application/x-hgl
- .hmr application/x-hmr .hpg application/x-hpgl
- .hpl application/x-hpl .hqx application/mac-binhex40
- .hrf application/x-hrf .hta application/hta
- .htc text/x-component .htm text/html
- .html text/html .htt text/webviewhtml
- .htx text/html .icb application/x-icb
- .ico image/x-icon .ico application/x-ico
- .iff application/x-iff .ig4 application/x-g4
- .igs application/x-igs .iii application/x-iphone
- .img application/x-img .ins application/x-internet-signup
- .isp application/x-internet-signup .IVF video/x-ivf
- .java java/* .jfif image/jpeg
- .jpe image/jpeg .jpe application/x-jpe
- .jpeg image/jpeg .jpg image/jpeg
- .jpg application/x-jpg .js application/x-javascript
- .jsp text/html .la1 audio/x-liquid-file
- .lar application/x-laplayer-reg .latex application/x-latex
- .lavs audio/x-liquid-secure .lbm application/x-lbm
- .lmsff audio/x-la-lms .ls application/x-javascript
- .ltr application/x-ltr .m1v video/x-mpeg
- .m2v video/x-mpeg .m3u audio/mpegurl
- .m4e video/mpeg4 .mac application/x-mac
- .man application/x-troff-man .math text/xml
- .mdb application/msaccess .mdb application/x-mdb
- .mfp application/x-shockwave-flash .mht message/rfc822
- .mhtml message/rfc822 .mi application/x-mi
- .mid audio/mid .midi audio/mid
- .mil application/x-mil .mml text/xml
- .mnd audio/x-musicnet-download .mns audio/x-musicnet-stream
- .mocha application/x-javascript .movie video/x-sgi-movie
- .mp1 audio/mp1 .mp2 audio/mp2
- .mp2v video/mpeg .mp3 audio/mp3
- .mp4 video/mpeg4 .mpa video/x-mpg
- .mpd application/vnd.ms-project .mpe video/x-mpeg
- .mpeg video/mpg .mpg video/mpg
- .mpga audio/rn-mpeg .mpp application/vnd.ms-project
- .mps video/x-mpeg .mpt application/vnd.ms-project
- .mpv video/mpg .mpv2 video/mpeg
- .mpw application/vnd.ms-project .mpx application/vnd.ms-project
- .mtx text/xml .mxp application/x-mmxp
- .net image/pnetvue .nrf application/x-nrf
- .nws message/rfc822 .odc text/x-ms-odc
- .out application/x-out .p10 application/pkcs10
- .p12 application/x-pkcs12 .p7b application/x-pkcs7-certificates
- .p7c application/pkcs7-mime .p7m application/pkcs7-mime
- .p7r application/x-pkcs7-certreqresp .p7s application/pkcs7-signature
- .pc5 application/x-pc5 .pci application/x-pci
- .pcl application/x-pcl .pcx application/x-pcx
- .pdf application/pdf .pdf application/pdf
- .pdx application/vnd.adobe.pdx .pfx application/x-pkcs12
- .pgl application/x-pgl .pic application/x-pic
- .pko application/vnd.ms-pki.pko .pl application/x-perl
- .plg text/html .pls audio/scpls
- .plt application/x-plt .png image/png
- .png application/x-png .pot application/vnd.ms-powerpoint
- .ppa application/vnd.ms-powerpoint .ppm application/x-ppm
- .pps application/vnd.ms-powerpoint .ppt application/vnd.ms-powerpoint
- .ppt application/x-ppt .pr application/x-pr
- .prf application/pics-rules .prn application/x-prn
- .prt application/x-prt .ps application/x-ps
- .ps application/postscript .ptn application/x-ptn
- .pwz application/vnd.ms-powerpoint .r3t text/vnd.rn-realtext3d
- .ra audio/vnd.rn-realaudio .ram audio/x-pn-realaudio
- .ras application/x-ras .rat application/rat-file
- .rdf text/xml .rec application/vnd.rn-recording
- .red application/x-red .rgb application/x-rgb
- .rjs application/vnd.rn-realsystem-rjs .rjt application/vnd.rn-realsystem-rjt
- .rlc application/x-rlc .rle application/x-rle
- .rm application/vnd.rn-realmedia .rmf application/vnd.adobe.rmf
- .rmi audio/mid .rmj application/vnd.rn-realsystem-rmj
- .rmm audio/x-pn-realaudio .rmp application/vnd.rn-rn_music_package
- .rms application/vnd.rn-realmedia-secure .rmvb application/vnd.rn-realmedia-vbr
- .rmx application/vnd.rn-realsystem-rmx .rnx application/vnd.rn-realplayer
- .rp image/vnd.rn-realpix .rpm audio/x-pn-realaudio-plugin
- .rsml application/vnd.rn-rsml .rt text/vnd.rn-realtext
- .rtf application/msword .rtf application/x-rtf
- .rv video/vnd.rn-realvideo .sam application/x-sam
- .sat application/x-sat .sdp application/sdp
- .sdw application/x-sdw .sit application/x-stuffit
- .slb application/x-slb .sld application/x-sld
- .slk drawing/x-slk .smi application/smil
- .smil application/smil .smk application/x-smk
- .snd audio/basic .sol text/plain
- .sor text/plain .spc application/x-pkcs7-certificates
- .spl application/futuresplash .spp text/xml
- .ssm application/streamingmedia .sst application/vnd.ms-pki.certstore
- .stl application/vnd.ms-pki.stl .stm text/html
- .sty application/x-sty .svg text/xml
- .swf application/x-shockwave-flash .tdf application/x-tdf
- .tg4 application/x-tg4 .tga application/x-tga
- .tif image/tiff .tif application/x-tif
- .tiff image/tiff .tld text/xml
- .top drawing/x-top .torrent application/x-bittorrent
- .tsd text/xml .txt text/plain
- .uin application/x-icq .uls text/iuls
- .vcf text/x-vcard .vda application/x-vda
- .vdx application/vnd.visio .vml text/xml
- .vpg application/x-vpeg005 .vsd application/vnd.visio
- .vsd application/x-vsd .vss application/vnd.visio
- .vst application/vnd.visio .vst application/x-vst
- .vsw application/vnd.visio .vsx application/vnd.visio
- .vtx application/vnd.visio .vxml text/xml
- .wav audio/wav .wax audio/x-ms-wax
- .wb1 application/x-wb1 .wb2 application/x-wb2
- .wb3 application/x-wb3 .wbmp image/vnd.wap.wbmp
- .wiz application/msword .wk3 application/x-wk3
- .wk4 application/x-wk4 .wkq application/x-wkq
- .wks application/x-wks .wm video/x-ms-wm
- .wma audio/x-ms-wma .wmd application/x-ms-wmd
- .wmf application/x-wmf .wml text/vnd.wap.wml
- .wmv video/x-ms-wmv .wmx video/x-ms-wmx
- .wmz application/x-ms-wmz .wp6 application/x-wp6
- .wpd application/x-wpd .wpg application/x-wpg
- .wpl application/vnd.ms-wpl .wq1 application/x-wq1
- .wr1 application/x-wr1 .wri application/x-wri
- .wrk application/x-wrk .ws application/x-ws
- .ws2 application/x-ws .wsc text/scriptlet
- .wsdl text/xml .wvx video/x-ms-wvx
- .xdp application/vnd.adobe.xdp .xdr text/xml
- .xfd application/vnd.adobe.xfd .xfdf application/vnd.adobe.xfdf
- .xhtml text/html .xls application/vnd.ms-excel
- .xls application/x-xls .xlw application/x-xlw
- .xml text/xml .xpl audio/scpls
- .xq text/xml .xql text/xml
- .xquery text/xml .xsd text/xml
- .xsl text/xml .xslt text/xml
- .xwd application/x-xwd .x_b application/x-x_b
- .sis application/vnd.symbian.install .sisx application/vnd.symbian.install
- .x_t application/x-x_t .ipa application/vnd.iphone
- .apk application/vnd.android.package-archive .xap application/x-silverlight-app
Server
WSGIServer/0.2 CPython/3.7.2 表示服务端用的语言和服务
Vary
Vary
是一个HTTP响应头部信息,它决定了对于未来的一个请求头,
应该用一个缓存的回复(response)还是向源服务器请求一个新的回复。
它被服务器用来表明在 content negotiationalgorithm(内容协商算法)中选择一个资源代表的时候应该使用哪些头部信息(headers)
X-Frame-Options
The X-Frame-Options
HTTP 响应头是用来给浏览器 指示允许一个页面
可否在 <frame>
, <iframe>
, <embed>
或者 <object>
中展现的标记。
站点可以通过确保网站没有被嵌入到别人的站点里面,从而避免 clickjacking 攻击。
使用 X-Frame-Options
X-Frame-Options 有三个值:
DENY
- 表示该页面不允许在 frame 中展示,即便是在相同域名的页面中嵌套也不允许。
SAMEORIGIN
- 表示该页面可以在相同域名页面的 frame 中展示。
ALLOW-FROM uri
- 表示该页面可以在指定来源的 frame 中展示。
- ps:
换一句话说,如果设置为 DENY,不光在别人的网站 frame 嵌入时会无法加载,
在同域名页面中同样会无法加载。另一方面,如果设置为
SAMEORIGIN
,那么页面就可以在同域名页面的 frame 中嵌套。
所有头
6. 首部
6.1 通用首部字段
首部字段名 | 说明 |
---|---|
Cache-Control | 控制缓存行为 |
Connection | 链接的管理 |
Date | 报文日期 |
Pragma | 报文指令 |
Trailer | 报文尾部的首部 |
Trasfer-Encoding | 指定报文主体的传输编码方式 |
Upgrade | 升级为其他协议 |
Via | 代理服务器信息 |
Warning | 错误通知 |
6.2 请求首部字段
首部字段名 | 说明 |
---|---|
Accept | 用户代理可处理的媒体类型 |
Accept-Charset | 优先的字符集 |
Accept-Encoding | 优先的编码 |
Accept-Langulage | 优先的语言 |
Authorization | Web认证信息 |
Expect | 期待服务器的特定行为 |
From | 用户的电子邮箱地址 |
Host | 请求资源所在的服务器 |
If-Match | 比较实体标记 |
If-Modified-Since | 比较资源的更新时间 |
If-None-Match | 比较实体标记 |
If-Range | 资源未更新时发送实体Byte的范围请求 |
If-Unmodified-Since | 比较资源的更新时间(和If-Modified-Since相反) |
Max-Forwards | 最大传输跳数 |
Proxy-Authorization | 代理服务器需要客户端认证 |
Range | 实体字节范围请求 |
Referer | 请求中的URI的原始获取方 |
TE | 传输编码的优先级 |
User-Agent | HTTP客户端程序的信息 |
6.3 响应首部字段
首部字段名 | 说明 |
---|---|
Accept-Ranges | 是否接受字节范围 |
Age | 资源的创建时间 |
ETag | 资源的匹配信息 |
Location | 客户端重定向至指定的URI |
Proxy-Authenticate | 代理服务器对客户端的认证信息 |
Retry-After | 再次发送请求的时机 |
Server | 服务器的信息 |
Vary | 代理服务器缓存的管理信息 |
www-Authenticate | 服务器对客户端的认证 |
6.4 实体首部字段
首部字段名 | 说明 |
---|---|
Allow | 资源可支持的HTTP方法 |
Content-Encoding | 实体的编码方式 |
Content-Language | 实体的自然语言 |
Content-Length | 实体的内容大小(字节为单位) |
Content-Location | 替代对应资源的URI |
Content-MD5 | 实体的报文摘要 |
Content-Range | 实体的位置范围 |
Content-Type | 实体主体的媒体类型 |
Expires | 实体过期时间 |
Last-Modified | 资源的最后修改时间 |
请求头字段 | 说明 | 响应头字段 |
---|---|---|
Accept | 告知服务器发送何种媒体类型 | Content-Type |
Accept-Language | 告知服务器发送何种语言 | Content-Language |
Accept-Charset | 告知服务器发送何种字符集 | Content-Type |
Accept-Encoding | 告知服务器采用何种压缩方式 | Content-Encoding |
Http 请求头 响应体 详解的更多相关文章
- HTTP请求与响应报文详解
如图所示,这是客户端往服务器发送请求时的报文: 一般来说,将报文分成三个部分,请求行.请求头.请求体 如图,请求行包括三部分内容 1.请求方法,在HTTP里的请求方法种类较多,但就移动端开发来说,常用 ...
- HTTP请求行、请求头、请求体详解
HTTP 请求头各参数具体含义 Header 解释 示例Accept 指定客户端能够接收的内容类型 Accept: text/plain, text/htmlAccept-Charset 浏览器可以接 ...
- HTTP请求行、请求头、请求体详解(转)
转自 https://blog.csdn.net/u010256388/article/details/68491509/ HTTP请求报文解剖 HTTP请求报文由3部分组成(请求行+请求头+ ...
- 【校招面试 之 网络】第3题 HTTP请求行、请求头、请求体详解
1.HTTP请求报文解剖 HTTP请求报文由3部分组成(请求行+请求头+请求体): 下面是一个实际的请求报文: ①是请求方法,GET和POST是最常见的HTTP方法,除此以外还包括DELETE.HEA ...
- jmeter --响应断言详解
jmeter --响应断言详解 响应断言 :对服务器的响应进行断言校验 (1)应用范围: main sample and sub sample, main sample only , sub-samp ...
- Jmeter接口之响应断言详解
响应断言 : 对服务器的响应进行断言校验 Apply to 应用范围: main sample and sub sample, main sample only , sub-sample only , ...
- Python网络请求urllib和urllib3详解
Python网络请求urllib和urllib3详解 urllib是Python中请求url连接的官方标准库,在Python2中主要为urllib和urllib2,在Python3中整合成了urlli ...
- [转载]MAC、IP头、TCP头、UDP头帧格式、详解
原文地址:MAC.IP头.TCP头.UDP头帧格式.详解作者:iTudu 转自:http://zoufengfu168.blog.163.com/blog/static/546105520099133 ...
- NetBios 的结构体详解
[NetBios 的结构体详解] NetBIOS是早期的局域网传输协议. 1.结构体. 2.命令 NetBIOS命令的使用方式有两种,即等待和非等待(或称为同步与异步)方式. 如果命令码的高阶位是0时 ...
随机推荐
- 实现不同分辨率、不同浏览器下高度自适应、iframe高度自适应
html: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <tit ...
- [转帖]Kubernetes - nginx-ingress 配置跳坑指南
Kubernetes - nginx-ingress 配置跳坑指南 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https:// ...
- golang之匿名函数结合defer
defer语句中的函数会在return语句更新返回值变量后再执行,又因为在函数中定义的匿名函数可以访问该函数包括返回值变量在内的所有变量,所以,对匿名函数采用defer机制,可以使其观察函数的返回值. ...
- youku项目总结(粗略总结)
一.ORM 之前我们都是以文件保存的形式存储数据,这次我们用的是数据库结合python使用,用到 ORM:关系型映射 类>>数据库的一张表 对象>>表一条记录 对象.属性> ...
- 『Python基础练习题』day05
# 请将列表中的每个元素通过 "_" 链接起来. users = ['毛利兰', '柯南', '怪盗基德'] # 请将元组 v1 = (11, 22, 33) 中的所有元素追加到列 ...
- hdu 1342.. 复习广搜 顺便练习一下一个脑残的格式
In a Lotto I have ever played, one has to select 6 numbers from the set {1,2,...,49}. A popular stra ...
- Linux判断SSD或HDD + 模拟SSD
判断方法 方法一 判断cat /sys/block/*/queue/rotational的返回值(其中*为你的硬盘设备名称,例如sda等等),如果返回1则表示磁盘可旋转(HDD),返回0,则表示磁盘不 ...
- openstack-neutron(2)
VXLAN 独立于底层的网络拓扑:反过来,两个 VTEP 之间的底层 IP 网络也独立于 VXLAN.VXLAN 数据包是根据外层的 IP header 路由的,该 header 将两端的 VTEP ...
- nginx Proxy Cache 配置
总结一下 proxy cache 设置的常用指令及使用方法: proxy_cache proxy_cache zone | off 配置一块公用的内存区域的名称,该区域可以存放缓存的索引数据.注意:z ...
- win10重装系统修改信息
在安装win10系统之前要先进行ahci硬盘模式更改 ,以防止win10系统安装完成后出现蓝屏现象,那么如何进行ahci硬盘模式bios设置呢?今天我们就以映泰主板为大家介绍u盘装win10系统硬盘模 ...