参数列表
Header | 解释 | 示例 |
---|---|---|
Accept |
指定客户端能够接收的内容类型 | Accept: text/plain, text/html,application/json |
Accept-Charset |
浏览器可以接受的字符编码集。 | Accept-Charset: iso-8859-5 |
Accept-Encoding |
指定浏览器可以支持的web 服务器返回内容压缩编码类型。 |
Accept-Encoding: compress, gzip |
Accept-Language |
浏览器可接受的语言 | Accept-Language: en,zh |
Accept-Ranges |
可以请求网页实体的一个或者多个子范围字段 | Accept-Ranges: bytes |
Authorization |
HTTP授权的授权证书 | Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ== |
Cache-Control |
指定请求和响应遵循的缓存机制 | Cache-Control: no-cache |
Connection |
表示是否需要持久连接。(HTTP 1.1默认进行持久连接) | Connection: close |
Cookie |
HTTP请求发送时,会把保存在该请求域名下的所有cookie 值一起发送给web 服务器。 |
Cookie: $Version=1; Skin=new; |
Content-Length |
请求的内容长度 | Content-Length: 348 |
Content-Type |
请求的与实体对应的MIME 信息 |
Content-Type: application/x-www-form-urlencoded |
Date |
请求发送的日期和时间 | Date: Tue, 15 Nov 2010 08:12:31 GMT |
Expect |
请求的特定的服务器行为 | Expect: 100-continue |
From |
发出请求的用户的Email |
From: user@email.com |
Host |
指定请求的服务器的域名和端口号 | Host: www.zcmhi.com |
If-Match |
只有请求内容与实体相匹配才有效 | If-Match: “737060cd8c284d8af7ad3082f209582d” |
If-Modified-Since |
如果请求的部分在指定时间之后被修改则请求成功,未被修改则返回304 代码 |
If-Modified-Since: Sat, 29 Oct 2010 19:43:31 GMT |
If-None-Match |
如果内容未改变返回304 代码,参数为服务器先前发送的Etag ,与服务器回应的Etag 比较判断是否改变 |
If-None-Match: “737060cd8c284d8af7ad3082f209582d” |
If-Range |
如果实体未改变,服务器发送客户端丢失的部分,否则发送整个实体。参数也为Etag |
If-Range: “737060cd8c284d8af7ad3082f209582d” |
If-Unmodified-Since |
只在实体在指定时间之后未被修改才请求成功 | If-Unmodified-Since: Sat, 29 Oct 2010 19:43:31 GMT |
Max-Forwards |
限制信息通过代理和网关传送的时间 | Max-Forwards: 10 |
Pragma |
用来包含实现特定的指令 | Pragma: no-cache |
Proxy-Authorization |
连接到代理的授权证书 | Proxy-Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ== |
Range |
只请求实体的一部分,指定范围 | Range: bytes=500-999 |
Referer |
先前网页的地址,当前请求网页紧随其后,即来路 | Referer: http://www.zcmhi.com/archives... |
TE |
客户端愿意接受的传输编码,并通知服务器接受接受尾加头信息 | TE: trailers,deflate;q=0.5 |
Upgrade |
向服务器指定某种传输协议以便服务器进行转换(如果支持) | Upgrade: HTTP/2.0, SHTTP/1.3, IRC/6.9, RTA/x11 |
User-Agent |
User-Agent 的内容包含发出请求的用户信息 |
User-Agent: Mozilla/5.0 (Linux; X11) |
Via |
通知中间网关或代理服务器地址,通信协议 | Via: 1.0 fred, 1.1 nowhere.com (Apache/1.1) |
Warning |
关于消息实体的警告信息 | Warn: 199 Miscellaneous warning |
Content-Type
HTTP
协议是以ASCII
码传输,建立在TCP/IP
协议之上的应用层规范- 协议规定
POST
提交的数据必须放在消息主体(entity-body
)中,但协议并没有规定数据必须使用什么编码方式 POST
提交数据方案,包含了Content-Type
和消息主体编码方式两部分
application/x-www-form-urlencoded
- 最常见的
POST
提交数据的方式 - 浏览器的原生
form
表单,如果不设置enctype
属性,那么最终就会以application/x-www-form-urlencoded
方式提交数据 Content-Type
被指定为application/x-www-form-urlencoded
- 提交的数据按照
key1=val1&key2=val2
的方式进行编码,key
和val
会进行了URL
转码 - 大部分服务端语言都对这种方式有很好的支持
multipart/form-data
- 一个比较常用的
POST
提交数据的方式 - 表单上传文件时,就是让
form
的enctype
等于这个值
application/json
- 消息主体是序列化后的
JSON
字符串
text/xml
- 相比于
JSON
。xml
不能更好的适用于数据交换。它包含了太多的包装,而且跟大多数编程语言的数据模型不匹配。 xml
一般用于存储数据、存储配置文件等需要结构化存储的地方- 数据传输、数据交互一般使用
JSON
application/octet-stream
- 提交二进制,而且只能提交一个二进制
- 如果提交文件的话,只能提交一个文件,后台接收参数只能有一个
- 而且只能是流(或者字节数组)
Referer
-
正确英语拼法是
referrer
。由于早期HTTP
规范的拼写错误,为了保持向后兼容就将错就错了 -
表示一个来源
-
可以通过给页面设置
mata
标签,来配置是否发送referer
,及如何发送
never
:删除http head
中的referer
;default
:如果当前页面使用的是https
协议,而正要加载的资源使用的是普通的http
协议,则将 http header
中的referer
置为空;origin
:只发送origin
部分;always
:不改变http header
中的referer
的值,注意:这种情况下,如果当前页面使用了https
协议,而要加载的资源使用的是http
协议,加载资源的请求头中也会携带referer
。
<!-- 所有从当前页面中发起的请求将不会携带 referer -->
<meta name="referrer" content="never">
<!-- 从当前页面中发起的 http请求将只携带 origin(包含了 schema 和 hostname 的部分 url,不包含 path 等后面的其他 url 部分) 部分。而不是完整的 URL -->
<meta name="referrer" content="origin">
rel=noreferer
会覆盖掉本文中的meta
标签所设置的值。也就是功能覆盖
<a href="https://www.baidu.com" rel="noreferer">百度</a>
空Referer
Referer
头部的内容为空,或者,一个HTTP
请求中根本不包含Referer
头部Referer
的作用是指示一个请求是从哪里链接过来,那么当一个请求并不是由链接触发产生的,那么自然也就不需要指定这个请求的链接来源。- 比如,直接在浏览器的地址栏中输入一个资源的
URL
地址,那么这种请求是不会包含Referer
字段的,因为这是一个“凭空产生”的HTTP
请求,并不是从一个地方链接过去的 - 允许
Referer
为空,意味着你允许比如浏览器直接访问,就是空
防盗链
比如图片防盗链。图片服务器每次取到Referer
来判断一下是不是我们自己的域名,如果是就继续访问,不是就拦截
将http
请求发给服务器后,如果服务器要求必须是某个地址或者某几个地址才能访问,而你发送的referer
不符合他的要求,就会拦截或者跳转到他要求的地址,然后再通过这个地址进行访问。
防止恶意请求
比如静态请求是*.html
结尾的,动态请求是*.shtml
,那么由此可以这么用,所有的*.shtml
请求,必须 Referer
为我们自己的网站
X-Requested-With
- 用于在服务器端判断
request
来自Ajax
请求还是传统请求 - 如果
requestedWith
为null
,则为同步请求。如果requestedWith
为XMLHttpRequest
则为Ajax
请求
if (request.getHeader("x-requested-with") != null
&& request.getHeader("x-requested-with").equalsIgnoreCase("XMLHttpRequest")) {
out.print("该请求是 AJAX 异步HTTP请求。");
}else{
out.print("该请求是传统的 同步HTTP请求。");
}
Jquery
中在发送请求是去掉X-Requested-With
代码
$.ajax({
url: 'http://www.zhangruifeng.com',
beforeSend: function( xhr ) {
xhr.setRequestHeader('X-Requested-With', {toString: function(){ return ''; }});
},
success: function( data ) {
if (console && console.log){
console.log( 'Got data without the X-Requested-With header' );
}
}
});
发表评论