简介:常见的 HTTP 请求 Header 字段,常见的 HTTP Respone Header 字段
说到HTTP的Header,大家并不陌生。Header主要分为请求头(Request Header)和服务器返回的头部(Response Header),今天我们针对这两部分来详细的聊聊吧!
1. 请求头(Request Header)
1.1 Host
这个字段主要指定目标服务器的域名或者IP,这个字段是必须字段。
1.2 User-Agent
发送请求的用户代理,一般都是浏览器的标识,标识中包含浏览器相关信息、操作系统、设备信息等。我们可以通过该字段判断当前机型及浏览器类型等
1.3 Accept
申明当前客户端允许接收的内容类型。比如:Accept: */*,客户端声明自己可以接受任何格式的数据
1.4 Content-Type
HTTP请求提交的内容类型。一般只有post提交时才需要设置该属性。
1.5 Authorization
身份证验证的凭据,用于访问受保护的资源。一般都是接口权限的token。
1.6 Connection
表示是否需要持久连接。如果web服务器端看到这里的值为“Keep-Alive”,或者看到请求使用的是HTTP 1.1(HTTP 1.1默认进行持久连接),它就可以利用持久连接的优点,当页面包含多个元素时(例如Applet,图片),显著地减少下载所需要的时间。要实现这一点, web服务器需要在返回给客户端HTTP头信息中发送一个Content-Length(返回信息正文的长度)头,最简单的实现方法是:先把内容写入ByteArrayOutputStream,然 后在正式写出内容之前计算它的大小。
1.7 Keep-Alive
显示此HTTP连接的Keep-Alive时间。使客户端到服务器端的连接持续有效,当出现对服务器的后继请求时,Keep-Alive功能避免了建立或者重新建立连接。
1.8 Cookie
HTTP请求发送时,会把保存在该请求域名下的所有cookie值一起发送给web服务器。
1.7 Referer
包含一个URL,用户从该URL代表的页面出发访问当前请求的页面。大部分防盗链就是通过该字段判断客户端的请求是否合法,如果该字段的值不是自己的域名,可以拒绝请求。
nginx通过该字段防盗链配置如下:
server {
listen 80;
server_name test.cn;
root /data/www/test;
location ~ .*\.(png|jpg|jpeg|gif){
access_log off;
# 简单的防盗链
valid_referers *.test.cn servicewechat.com none;
if ($invalid_referer) {
return 403;
}
expires 168h;
}
}
2.返回头(Response Header)
2.1 Content-Type
返回内容的MIME类型。示例:Content-Type: text/html; charset=utf-8
2.2 Content-Length
响应体的长度
2.3 Cache-Control
告诉浏览器的缓存机制是否可以缓存及哪种类型
2.4 Expires
设置了Cache-Control缓存时,expires缓存过期时间
2.5 Content-Encoding
服务器对响应数据的编码方式,但这里的编码方式不同于编码字符集(GB2312,UTF-8等),而是(通常)指压缩方式,例如Content-Encoding:gzip
2.6 Set-Cookie
设置Http Cookie。示例:Set-Cookie: UserID=JohnDoe; Max-Age=3600; Version=1
2.7 Location
用来重定向接收方到非请求URL的位置来完成请求或标识新的资源。这个值是重定向的url
2.8 ETag
(Entity-Tag的缩写)资源的一个标识,类似于key-value pair(键值对)中的key。ETag通常用于校验一个资源实体有没有被修改过。在数据缓存和PUT方法更新资源时候有用处。例如:ETag: “737060cd8c284d8af7ad3082f209582d”
2.9 Access-Control-Allow-Origin
表面该站点可以被哪些网站进行跨域资源共享(cross-origin resource sharing,CORS)(请参考“同源策略”和“跨域之源共享”)。
允许某些域名可以跨域请求:Access-Control-Allow-Origin: http://test.cn http://test.11.com
允许所有域名都可以跨域请求:Access-Control-Allow-Origin:*
有遗漏或者不对的可以在我的公众号留言哦