linwu-hi / code-interview

前端面试小册,包含Vue面试题,React面试题,JS面试题,HTTP面试题,工程化面试题,CSS面试题,算法面试题,大厂面试题,高频面试题
194 stars 23 forks source link

面试官:说说 HTTP 常见的请求头有哪些? 作用? #154

Open linwu-hi opened 1 year ago

linwu-hi commented 1 year ago

面试官:说说 HTTP 常见的请求头有哪些? 作用?

一、什么是HTTP头字段?

HTTP头字段(HTTP header fields)是指在超文本传输协议(HTTP)的请求和响应消息中的消息头部分。它们定义了一个HTTP事务中的操作参数。HTTP头部字段可以根据需要自定义,因此可能在Web服务器和浏览器上发现非标准的头字段。

下面是一个HTTP请求的请求头示例:

GET /home.html HTTP/1.1
Host: developer.mozilla.org
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:50.0) Gecko/20100101 Firefox/50.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Referer: https://developer.mozilla.org/testpage.html
Connection: keep-alive
Upgrade-Insecure-Requests: 1
If-Modified-Since: Mon, 18 Jul 2016 02:36:04 GMT
If-None-Match: "c561c68d0ba92bbeb8b0fff2a9199f722e3a621a"
Cache-Control: max-age=0

二、常见的请求头字段

以下是一些常见的HTTP请求头字段及其说明:

1. Accept

用于指定能够接受的回应内容类型(Content-Types)。

2. Accept-Charset

用于指定能够接受的字符集。

3. Accept-Encoding

用于指定能够接受的编码方式列表,常见的有gzip、deflate等。

4. Accept-Language

用于指定能够接受的回应内容的自然语言列表,例如en-US表示英语(美国)。

5. Authorization

用于超文本传输协议的认证的认证信息,通常用于进行用户身份验证。

6. Cache-Control

用来指定在请求/响应链中的所有缓存机制都必须遵守的指令,例如no-cache表示不缓存。

7. Cookie

用于服务器通过Set-Cookie发送的一个HTTP Cookie。

8. Content-Length

表示请求体的长度,以八位字节数组(8位的字节)表示。

9. Content-Type

用于指定请求体的多媒体类型,例如application/x-www-form-urlencoded表示表单数据。

10. User-Agent

表示浏览器的浏览器身份标识字符串,用于标识用户使用的浏览器信息。

11. Host

表示服务器的域名,以及服务器所监听的传输控制协议端口号。

12. Referer

表示请求的来源页面,即用户是从哪个页面跳转过来的。

13. Origin

用于发起一个针对跨来源资源共享的请求,表示允许跨域请求。

三、使用场景

通过配合请求头和响应头,可以实现一些常见的功能:

1. 协商缓存

通过请求头的If-Modified-SinceIf-None-Match和响应头的Last-ModifiedETag实现缓存的协商,减少不必要的数据传输。

2. 会话状态管理

通过请求头的Cookie字段,服务器可以在客户端维护会话状态,实现用户登录状态、购物车、个性化设置等功能。

以上是HTTP常见请求头及其作用的简要介绍,HTTP头字段在HTTP通信中扮演着重要的角色,帮助服务器和浏览器进行信息交换和功能实现。

参考文献