header响应头

什么是header


HTTP协议的请求和响应报文中必定包含HTTP首部。首部内容为客户端和服务器分别处理请求和响应提供所需要的信息。对于客户端用户来说,这些信息中的大部分内容都无须亲自查看。

使用首部字段是为了给浏览器和服务器提供报文主体大小、所使用的语言、认证信息等内容。


header类型

根据不同上下文,可将消息头分为:

  • Request headers: 从客户端向服务器端发送请求报文时使用的首部。补充了请求的附加内容、客户端信息、响应内容相关优先级等信息。
Accept:用户代理可处理的媒体类型
Accept-Charset:优先的字符集
Accept-Encoding:优先的内容编码
Accept-Language:优先的语言
Host:请求资源所在服务器
User-Agent:HTTP客户端的信息

以Accept来讲:

Accept: text/plain;q=0.3,text/html

Accept首部字段可通知服务器,用户代理能够处理的媒体类型及媒体类型的相对优先级。可使用type/subtype这种形式,一次指定多种媒体类型。q代表的是权重值。

下面是一些常用的媒体类型的例子:



当服务器提供多种内容时,将会首先返回权重值最高的媒体类型。

  • Response headers: 从服务器端向客户端返回响应报文时使用的首部。补充了响应的附加内容,也会要求客户端附加额外的内容信息。
Accept-Ranges:是否接受字节范围要求
Age:推算资源创建经过时间
Etag:资源的匹配信息
Location:令客户端重定向值指定URI
  • Entity headers: 包含有关实体主体的更多信息,比如主体长(Content-Length)度或其MIME类型。
Allow:资源可支持的HTTP方法
Content-Encoding:实体主体使用的编码方式
Content-Language:实体主体的自然语言
Content-Length:实体主体的大小(单位:字节)
Content-Type:实体主体的媒体类型  
//例子
Content-type:application/json
Content-Type:text/plain;charset=utf-8

Content-type对照表

  • General headers: 同时适用于请求和响应消息,但与最终消息主体中传输的数据无关的消息头。
Cache-Control:控制缓存行为
Connection:逐跳首部,链接的管理
Date:创建报文的日期
Warning:错误通知,通常会告知用户一些与缓存相关的问题的警告

如何设置header

客户端

在发送Ajax请求(实质是一个HTTP请求)时,我们可能需要设置上述一些请求头部信息,比如content-typeconnectioncookieaccept-xxx等。xhr提供了setRequestHeader来允许我们修改请求 header。

xhr.setRequestHeader(header, value);
  • 方法的第一个参数 header 大小写不敏感,即可以写成content-type,也可以写成Content-Type,甚至写成content-Type;

  • Content-Type的默认值与具体发送的数据类型有关(详情)。

  • setRequestHeader必须在open()方法之后,send()方法之前调用,否则会抛错;

需要注意的是,安全起见,有些请求头的值只能由user agent设置:forbidden header names和forbidden response header names.

服务器端

以Node.js为例

  response.writeHead(状态码,{header键值对});
  response.setHeader(header键值对);

你可能感兴趣的:(header响应头)