http请求头和响应头的含义

本文详细解析了HTTP请求头和响应头的作用及各字段意义,包括常见的Accept、Cache-Control等请求头字段,以及Location、Content-Type等响应头字段。

http://m.blog.youkuaiyun.com/article/details?id=8752914

http请求头和响应头的含义

参考文献:HTTP/1.1 Cache-Control的理解 


http请求头:

Accept: text/html,image/*    浏览器通过这个头,告诉服务器它所支持的数据类型
Accept-Charset: 浏览器通过这个头,告诉服务器它采用的字符集
Accept-Encoding:浏览器通过这个头,告诉服务器,它所支持的压缩格式
Accept-Language:浏览器通过这个头,告诉服务器,它所采用的语言
Host:浏览器通过这个头,告诉服务器,我想访问服务器哪台主机
If-Modified-Since:浏览器通过这个头,告诉服务器,它缓存数据时间是多少。
Referer:浏览器通过这个头,告诉服务器,我是从哪个网页点过来的(防盗链)
User-Agent: 浏览器通过这个头,告诉服务器,当前浏览器操作系统的信息,以及浏览器的版本号
Connection:
Date: 

http响应头:
Location:这个头通常配合302状态码使用,它用于告诉浏览器你去找谁。
Server:告诉浏览器,服务器的类型
Content-Encoding: 服务器通过这个头,告诉浏览器,回送的数据采用的压缩格式。
Content-Length: 80 
Content-Language: zh-cn 
Content-Type:这个头用于告诉浏览器,回送数据的类型
Last-Modified:这个头用于告诉浏览器,数据的最后修改时间
Refresh: :这个头用于控制浏览器定时刷新
Content-Disposition: 用于通知浏览器,以下载方式打开回送的数据
Transfer-Encoding: 用于通知浏览器,数据是以分块形式回送的
ETag: 缓存相头的头
Expires: 用于说明网页的失效时间,如果该值为一个<0的值,则服务器是通知浏览器不要缓存
Cache-Control: no-cache  通知浏览器不要缓存

Pragma: no-cache  



HTTP头分两种:

一、响应头

1、状态行

格式:版本  状态代码  说明  如:HTTP/1.1 200 OK

状态码:2xx 成功(200 OK、201 Created、202 Accepted、204 No Content)

3xx 重定向(300 Multiple Choice、301 Moved Permanently、302 Found、303 See Other、304 Not Modified、305 Use Proxy)

4xx 请求错误,这类的状态码代表了客户端看起来可能发生了错误,妨碍了服务器的处理(400 Bad Request、401 Unauthorized、403 Forbidden、404 Not Found、405 Method Not Allowed、406 Not Acceptable、408 Request Timeout等)

5xx 服务器错误(500 Internal Server Error、501 Not Implemented、502 Bad Gateway、503 Service Unavailable等)

2、expire  期限,即有效期

格式:Expires:GMT格式的时间   例如:Expires:Tue, 11 Oct 2011 04:42:44 GMT

3、Content-Type  文件类型

格式:Content-Type:类型( text/html;charset=gb2312、image/png、image/jpg、application/javascript等)

4、Content-Length 文件大小

格式:Content-Length:大小

5、Cache-Control  缓存控制

格式:Cache-Control:方式(private、public、no-cache、no-store、max-age、min-fresh、max-stale等)

Public  指示响应可被任何缓存区缓存。

Private  指示对于单个用户的整个或部分响应消息,不能被共享缓存处理。这允许服务器仅仅描述当用户的

部分响应消息,此响应消息对于其他用户的请求无效。

no-cache  指示请求或响应消息不能缓存(HTTP/1.0用Pragma的no-cache替换)

根据什么能被缓存

no-store  用于防止重要的信息被无意的发布。在请求消息中发送将使得请求和响应消息都不使用缓存。

根据缓存超时

max-age  指示客户机可以接收生存期不大于指定时间(以秒为单位)的响应。

min-fresh  指示客户机可以接收响应时间小于当前时间加上指定时间的响应。

max-stale  指示客户机可以接收超出超时期间的响应消息。如果指定max-stale消息的值,那么客户机可以

接收超出超时期指定值之内的响应消息。

6、Content-Encoding  内容格式  

格式:Content-Encoding:格式(gzip等)

7、date  时间

格式:Date:GMT格式时间,比如:Date: Tue, 11 Oct 2011 04:42:44 GMT

8、Server  服务器

格式:Server:服务器类型(BWS/1.0、apache、iis)  比如:Server:BWS/1.0

9、Connection 连接

格式:Connection:方式(Keep-Alive等)

10、Set-cookie  设置cookie

格式:Set-cookie:key=value;key2=value;

二、请求头

1、请求行

格式:请求方式(get、post)  某某文件  协议(HTTP/1.1)  比如:GET / HTTP/1.1

2、accept 接受的文件类型

格式:Acceptimage/gif, image/jpeg, image/pjpeg, image/pjpeg, application/x-ms-application, application/x-ms-xbap, application/vnd.ms-xpsdocument, application/xaml+xml, */*

3、Accept-Language  接收语言

格式:Accept-Languagezh-cn

4、Cookie

比如:CookieBAIDUID=80489F991FE27D7AA10C41259CF12346:FG=1

5、User-Agent  客户端类型

User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.2; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; CIBA)

6、Accept-Encoding: gzip, deflate

7、Connection: Keep-Alive

 

PHP中设置http响应头

使用内置header(“字符串”)来设置

例如:header("Content-Type:text/html;charset=utf-8");

header("Expires:GMT时间");

另外需要注意的是,header()函数不会严格检测字符串的内容,也就是说,不管字符串是否合法,除了header("Location:index.php"),php都会将字符串添加到响应头内,header("dada:my name is dada"),设置这个不合法的HTTP头字段,有效。

 

在HTML文档中使用meta标签设置http响应头

如:<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />

<meta http-equiv="Cache-control" content="no-cache"/> 等同于<meta http-equiv="Progma" content="no-cache" />,后者属于旧版本

<meta http-equiv="Set-Cookie" content="uid=123;name=dada"/>

<meta http-equiv="refresh" content="2;URL=http://www.baidu.com"/>重指向某站点

<meta http-equiv="expires" content="GMT格式时间"/>


### HTTP 请求头响应头详解 HTTP(HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。HTTP 协议通过请求头响应头传递信息,这些头部字段用于描述请求或响应的属性[^1]。 #### 请求头详解 请求头包含客户端发送给服务器的信息,用于说明客户端的请求行为、偏好以及附加数据。以下是一些常见的请求头字段及其含义: - **Host**: 指定请求的目标服务器的主机名端口号。 - **User-Agent**: 识别发起请求的用户代理程序(通常是浏览器)。 - **Accept**: 告知服务器客户端能够接受的内容类型。 - **Accept-Language**: 客户端希望接收的语言。 - **Accept-Encoding**: 客户端支持的压缩编码方式。 - **Content-Type**: 请求体中所包含的数据类型。 - **Content-Length**: 请求体的长度(以字节为单位)。 - **Authorization**: 包含访问资源所需的认证信息。 - **Referer**: 表明当前页面是从哪个页面链接过来的。 - **Connection**: 指定连接选项,例如是否保持长连接(`keep-alive`)。 ```python import requests headers = { 'Host': 'example.com', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)', 'Accept': 'text/html,application/xhtml+xml', 'Accept-Language': 'en-US,en;q=0.9', 'Content-Type': 'application/json', 'Authorization': 'Bearer YOUR_ACCESS_TOKEN' } response = requests.get('https://example.com', headers=headers) ``` #### 响应头详解 响应头由服务器返回给客户端,用于描述服务器的状态响应内容的元信息。以下是常见的响应头字段及其含义: - **Date**: 服务器生成响应的时间。 - **Server**: 服务器软件的名称版本。 - **Content-Type**: 响应主体的媒体类型。 - **Content-Length**: 响应主体的大小(以字节为单位)。 - **Location**: 重定向时使用,指定新的 URL。 - **Set-Cookie**: 设置客户端的 Cookie。 - **Cache-Control**: 控制缓存的行为。 - **ETag**: 实体标签,用于缓存验证。 - **Last-Modified**: 资源最后修改的时间。 - **Expires**: 响应过期的时间。 ```python # 示例:获取响应头 response = requests.get('https://example.com') print(response.headers) ``` 响应头中的 `Content-Type` 字段尤为重要,它告诉客户端如何解析响应体。例如,如果值为 `application/json`,则表示响应体为 JSON 格式[^2]。 #### 请求头响应头的区别 请求头主要由客户端发送,用于向服务器传达请求的具体要求;而响应头由服务器返回,用于告知客户端关于资源的状态特性。两者在功能用途上有显著差异。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值