计算机网络之常见请求头响应头字段及其作用
Accept-xxx
-
Accept 这个头信息指定浏览器或其他客户端可以处理的MIME类型(多媒体类型)。有text/html,image/,/等几种常用类型。/*可以简单的概括为告诉服务器,客户端什么数据类型都支持。 -
Accept-Charset 这个头信息指定浏览器可以用来显示信息的字符集。例如 ISO-8859-1。 -
Accept-Encoding 这个头信息指定浏览器知道如何处理的编码类型。值 gzip 或 compress 是最常见的两种可能值。 -
Accept-Language 这个头信息指定客户端的首选语言,在这种情况下,Servlet 会产生多种语言的结果。例如,en、en-us、ru 等。
Authorization
Authorization是用来告知服务器,用户代理的认证信息(证书值)。通常,想要通过服务器认证的用户代理会在接受到返回的401状态码响应后,把首部字段Authorization加入请求中。
连接相关
存储与缓存相关
-
Cookie 存储用户的信息和历史行为,存储session(保持会话),4k -
Expires 一个GMT时间(绝对时间),试图告知浏览器,在此日期内,可以信任并使用对应缓存中的副本,缺点是一但客户端日期不准确,则可能导致失效。 -
Last-Modified 一个GMT时间,告知被请求实体的最后修改时间.用于浏览器校验其缓存副本是否仍然可以信任.与其相关的两个条件请求标头:
-
If-Modified-Since 仅在get方法中意义,这个也是比较常见的。 如果实体在指定时间后,没有修改则返回一个304,否则返回一个常规的Get请求的响应(比如200),静态文件没有修改返回304是好的,因为它只是回服务器校验一下是否有修改,而并没有像200那样重新请求数据。 -
If-Unmodified-Since: 如果实体没有任何修改,那么就可以直接执行该请求, 而如果有修改,则返回一个412 Precondition Failed状态码,并且抛弃该方法对应的行为操作(GET方法除外). -
Cache-Control
-
public 仅体现在响应头,通知浏览器可以无条件的缓存该响应。 -
private 仅体现在响应头,通知浏览器只针对单个用户缓存响应. 且可以具体指定某个字段.如private –“username” -
no-cache 请求头中:告诉浏览器回去服务器取数据,并验证你的缓存(如果有的话)。 响应头中:告诉浏览器,一定要回服务器校验,不管有没有缓存数据。如果确定没有被改,可以使用缓存中的数据 -
no-store 告诉浏览器任何情况下都不要被缓存。 -
max-age 请求头中:强制响应浏览器,根据该值,校验缓存。即与自身的Age值,与请求时间做比较。如果超出max-age值,则强制去服务器端验证。以确保返回一个新鲜的响应。其功能本质上与传统的Expires类似,但区别在于Expires是根据某个特定日期值做比较。一但缓存者自身的时间不准确,则结果可能就是错误的。而max-age,显然无此问题。Max-age的优先级也是高于Expires的。 即max-age是相对时间,Expires是绝对时间。 -
ETag 资源实体的标识(唯一标识,类似md5值,文件有修改md5就不一样),如果资源被修改则Etag也会改变,可以根据Etag的变化知道资源是否被改变,相较于last-modifid的好处是,不会被时间影响。 比如一个资源在修改一段时间后又修改回去了,这样last-modified就会认定这样的情况是资源被修改了,然后返回新的资源。而Etag则会认为资源没有被修改。
跨域相关
响应头:
-
Access-Control-Allow-Credentials 这里的Credentials(凭证)其意包括:Cookie ,授权标头或 TLS 客户端证书,默认CORS请求是不带Cookies的,这与JSONP不同,JSONP每次请求都携带Cookies的,当然跨域允许带Cookies会导致CSRF漏洞。如果非要跨域传递Cookies,web端需要给ajax设置withCredentials为true,同时,服务器也必须使用Access-Control-Allow-Credentials头响应。此响应头true意味着服务器允许cookies(或其他用户凭据)包含在跨域请求中。另外,简单的GET请求是不预检的,即使请求的时候设置widthCrenditials为true,如果响应头不带Access-Control-Allow-Credentials,则会导致整个响应资源被浏览器忽略。 -
Access-Control-Allow-Origin 是否允许当前源访问。 -
Access-Control-Allow-Headers 在CORS中,默认的,只允许客户端读取下面六个响应头
- Cache-Control
- Content-Language
- Content-Type
- Expires
- Last-Modified
- Pragma
-
Access-Control-Allow-Methods
Referer
这个头信息指示所指向的 Web 页的 URL。例如,如果您在网页 1,点击一个链接到网页 2,当浏览器请求网页 2 时,网页 1 的 URL 就会包含在 Referer 头信息中。 指示该请求来自于哪个网页的URL,可以一定程度防止CSRF攻击:服务器端检查Referer字段可以判断发起请求的网站是否是原来的网站,因为CSRF攻击会在获得用户Cookie后从另一个网站发送请求。
Host
这个头信息指定原始的 URL 中的主机和端口。
|