HTTP常用参数对照表
程序员文章站
2024-03-17 11:59:40
...
HTTP响应头和请求头信息对照表
HTTP请求头提供了关于请求,响应或者其他的发送实体的信息。HTTP的头信息包括通用头、请求头、响应头和实体头四个部分。每个头域由一个域名,冒号(:)和域值三部分组成。
通用头标:即可用于请求,也可用于响应,是作为一个整体而不是特定资源与事务相关联。
请求头标:允许客户端传递关于自身的信息和希望的响应形式。
响应头标:服务器和于传递自身信息的响应。
实体头标:定义被传送资源的信息。即可用于请求,也可用于响应。
HTTP Request Header 请求头
Header 解释 示例
Accept 指定客户端能够接收的内容类型 Accept: text/plain, text/html
Accept-Charset 浏览器可以接受的字符编码集。 Accept-Charset: iso-8859-5
Accept-Encoding 指定浏览器可以支持的web服务器返回内容压缩编码类型。 Accept-Encoding: compress, gzip
Accept-Language 浏览器可接受的语言 Accept-Language: en,zh
Accept-Ranges 可以请求网页实体的一个或者多个子范围字段 Accept-Ranges: bytes
Authorization HTTP授权的授权证书 Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
Cache-Control 指定请求和响应遵循的缓存机制 Cache-Control: no-cache
Connection 表示是否需要持久连接。(HTTP 1.1默认进行持久连接) Connection: close
Cookie HTTP请求发送时,会把保存在该请求域名下的所有cookie值一起发送给web服务器。 Cookie: $Version=1; Skin=new;
Content-Length 请求的内容长度 Content-Length: 348
Content-Type 请求的与实体对应的MIME信息 Content-Type: application/x-www-form-urlencoded
Date 请求发送的日期和时间 Date: Tue, 15 Nov 2010 08:12:31 GMT
Expect 请求的特定的服务器行为 Expect: 100-continue
From 发出请求的用户的Email From: [email protected]
Host 指定请求的服务器的 域名:端口号 也可以是 IP:端口号 Host: www.zcmhi.com
Referer 亲测,任何非首次请求都有这个参数, 该首部用于所有请求.告诉服务器我是从哪个页面链接过来的,即来路 Referer: http://www.zcmhi.com/archives/71.html
Origin 亲测,只有跨域请求或跳转时才有这个参数, 该首部用于 CORS 请求或者 POST 请求, 指示了请求来自于哪个站点。该字段仅指示服务器名称,并不包含任何路径信息。Origin: https://developer.mozilla.org
If-Match 只有请求内容与实体相匹配才有效 If-Match: “737060cd8c284d8af7ad3082f209582d”
If-Modified-Since 如果请求的部分在指定时间之后被修改则请求成功,未被修改则返回304代码 If-Modified-Since: Sat, 29 Oct 2010 19:43:31 GMT
If-None-Match 如果内容未改变返回304代码,参数为服务器先前发送的Etag,与服务器回应的Etag比较判断是否改变 If-None-Match: “737060cd8c284d8af7ad3082f209582d”
If-Range 如果实体未改变,服务器发送客户端丢失的部分,否则发送整个实体。参数也为Etag If-Range: “737060cd8c284d8af7ad3082f209582d”
If-Unmodified-Since 只在实体在指定时间之后未被修改才请求成功 If-Unmodified-Since: Sat, 29 Oct 2010 19:43:31 GMT
Max-Forwards 限制信息通过代理和网关传送的时间 Max-Forwards: 10
Pragma 用来包含实现特定的指令 Pragma: no-cache
Proxy-Authorization 连接到代理的授权证书 Proxy-Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
Range 只请求实体的一部分,指定范围 Range: bytes=500-999
TE 客户端愿意接受的传输编码,并通知服务器接受接受尾加头信息 TE: trailers,deflate;q=0.5
Upgrade 向服务器指定某种传输协议以便服务器进行转换(如果支持) Upgrade: HTTP/2.0, SHTTP/1.3, IRC/6.9, RTA/x11
User-Agent User-Agent的内容包含发出请求的用户信息 User-Agent: Mozilla/5.0 (Linux; X11)
Via 通知中间网关或代理服务器地址,通信协议 Via: 1.0 fred, 1.1 nowhere.com (Apache/1.1)
Warning 关于消息实体的警告信息 Warn: 199 Miscellaneous warning
请求头常用参数对用的设置
Cache-control:
Cache-Control: max-age=<seconds>
Cache-Control: max-stale[=<seconds>]
Cache-Control: min-fresh=<seconds>
Cache-control: no-cache
Cache-control: no-store
Cache-control: no-transform
Cache-control: only-if-cached
[1] no-cache ---- 不要读取缓存中的文件,要求向WEB服务器重新请求
[2] no-store ---- 请求和响应都禁止被缓存
[2] max-age: ---- 表示当访问此网页后的max-age秒内再次访问不会去服务器请求,其功能与Expires类似,只是Expires是根据某个特定日期值做比较。一但缓存者自身的时间不准确.则结果可能就是错误的,而max-age,显然无此问题.。Max-age的优先级也是高于Expires的。
[3] max-stale ---- 允许读取过期时间必须小于max-stale 值的缓存对象。
[4] min-fresh ---- 接受其max-age生命期大于其当前时间 跟 min-fresh 值之和的缓存对象
[5] only-if-cached ---- 告知缓存者,我希望内容来自缓存,我并不关心被缓存响应,是否是新鲜的.
[6] no-transform ---- 告知代理,不要更改媒体类型,比如jpg,被你改成png.
示例:
禁止缓存
Cache-Control: no-cache, no-store, must-revalidate
缓存静态资源
Cache-Control:public, max-age=31536000
请求Content-type常用的配置
下面这个是我在Chrome中复制到的案例,但是大小写这个问题我没找到.
下面这些不够看的话,具体看下面响应头的吧,那里的多一点.
Content-type 有请求设置的也有响应设置的,这里只说请求设置的.
而响应的 Content-type 则在下面的响应头信息后面记录.
Content-type 有将近200种,这种只写常用的三种吧.
- Content-Type: application/x-www-form-urlencoded
最常见的 POST 提交数据的方式了。
浏览器的原生 <form> 表单,如果不设置 enctype 属性,那么最终就会以 application/x-www-form-urlencoded 方式提交数据。
首先,Content-Type 被指定为 application/x-www-form-urlencoded;其次,提交的数据按照 key1=val1&key2=val2 的方式进行编码,key 和 val 都进行了 URL 转码。大部分服务端语言都对这种方式有很好的支持。
例如 PHP 中,$_POST['title'] 可以获取到 title 的值,$_POST['sub'] 可以得到 sub 数组。
很多时候,我们用 Ajax 提交数据时,也是使用这种方式。
例如 JQuery 的 Ajax,Content-Type 默认值都是「application/x-www-form-urlencoded;charset=utf-8」。
下面这个是请求参数, 在通过浏览器请求的时候,如Chrome点开控制台中的请求头.选择原生查看,可以看到POST的请求参数,都是以k=v&k=v的形式请求.
我在PHP中使用 file_get_contents 请求时,如果要设置POST请求头,在请求头中添加也会这么干,
做一个这样的操作 'content' => http_build_query($postData),
_csrfToken=&username=json%40163.com&password=sssss&geetest_challenge=2aeeee938f8767f9e49725347d55a48bfi&geetest_validate=54cbc95414d9d7d397c21b1b9b75c3bd&geetest_seccode=54cbc95414d9d7d397c21b1b9b75c3bd%7Cjordan
我用PHP写的简单案例:
$data = [
'uid' => '3',
'coin' => 'btc',
'amount' => '10',
'transfer_id' => rand(1, 100),
'from' => '2', //1主站,2OTC
'to' => '1',
];
$context = stream_context_create([
'http' => [
'method' => 'POST',
'timeout' => '3',
'header' => 'Content-type: application/x-www-form-urlencoded',
'content' => http_build_query($data),
],
]);
$result = file_get_contents(
$_SERVER['REQUEST_SCHEME'] . '://' . $_SERVER['HTTP_HOST'] . '/api/finance/transfer',
false,
$context
);
完整请求案例:
POST /web/user/account HTTP/1.1
Host: www.cetest.com
Connection: keep-alive
Content-Length: 211
Pragma: no-cache
Cache-Control: no-cache
Accept: application/json, text/plain, */*
Origin: http://www.cetest.com
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36
DNT: 1
Content-Type: application/x-www-form-urlencoded
Referer: http://www.cetest.com/user/login/
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
Cookie: __zlcmid=qIhvlOPaskTFPJ; _ga=GA1.2.588344771.1547546595; USER_PW=8ef050580742753b0f27e9882389960f; PHPSESSID=acf73210c191350915c2a169c72ee2ee; languageStyle=1; lang=en_US
_csrfToken=&username=json%40163.com&password=sssss&geetest_challenge=2aeeee938f8767f9e49725347d55a48bfi&geetest_validate=54cbc95414d9d7d397c21b1b9b75c3bd&geetest_seccode=54cbc95414d9d7d397c21b1b9b75c3bd%7Cjordan
- Content-Type: multipart/form-data; boundary=---------------------------13803311712107636103297225856
使用表单上传文件时,必须让 <form>标签中的 enctype参数 等于这个值。
如:
<form action="/user/login" method="post" enctype="multipart/form-data">
</form>
通过浏览器,比如Chrome或者Firefox都可以从请求头中看到该请求参数
上面提到的这两种 POST 数据的方式,都是浏览器原生支持的,而且现阶段标准中原生 <form> 表单也只支持这两种方式(通过 <form> 元素的 enctype 属性指定,默认为 application/x-www-form-urlencoded。其实 enctype 还支持 text/plain,不过用得非常少)。
这个例子稍微复杂点。
首先生成了一个 boundary 用于分割不同的字段,为了避免与正文内容重复,boundary 很长很复杂。
然后 Content-Type 里指明了数据是以 multipart/form-data 来编码,本次请求的 boundary 是什么内容。
消息主体里按照字段个数又分为多个结构类似的部分,每部分都是以 --boundary 开始,紧接着是内容描述信息,然后是回车,最后是字段具体内容(文本或二进制)。
如果传输的是文件,还要包含文件名和文件类型信息。
消息主体最后以 --boundary-- 标示结束。关于 multipart/form-data 的详细定义,请前往 rfc1867 查看。
这种方式一般用来上传文件,各大服务端语言对它也有着良好的支持。
随着越来越多的 Web 站点,尤其是 WebApp,全部使用 Ajax 进行数据交互之后,我们完全可以定义新的数据提交方式,给开发带来更多便利。
如果是Chrome浏览器,从控制台在请求头一栏滑到最下面, 查看formdata里面就是下面这个样子所有的请求参数都在里面
如果是Firefox,从控制台点开参数一栏看到下面这种
Chrome浏览器
------WebKitFormBoundaryhWoGW1ZpIbxmmJ0V
Content-Disposition: form-data; name="_csrfToken"
akdsX1lBdmFVTXo5cGhIS05QZEVCb2cyYWlVdEd2bUhvT0VYbTFSaFF2aklOOUEtdXNidjdCMV9ONmJENDlzS2lGNzRNaWxlbkhVR0Z4VDc5clNONVE9PQ==
------WebKitFormBoundaryhWoGW1ZpIbxmmJ0V
Content-Disposition: form-data; name="intl"
6
------WebKitFormBoundaryhWoGW1ZpIbxmmJ0V
Content-Disposition: form-data; name="name"
asdfsss
------WebKitFormBoundaryhWoGW1ZpIbxmmJ0V
Content-Disposition: form-data; name="id_type"
1
------WebKitFormBoundaryhWoGW1ZpIbxmmJ0V
Content-Disposition: form-data; name="id_number"
asdfasdf
------WebKitFormBoundaryhWoGW1ZpIbxmmJ0V
Content-Disposition: form-data; name="photo[]"; filename="0BC4C4D581D1895A6BD859FDE53FE72A.jpg"
Content-Type: image/jpeg
------WebKitFormBoundaryhWoGW1ZpIbxmmJ0V
Content-Disposition: form-data; name="photo[]"; filename="0CA48D7D20CA37EB22709B8DC07CF5F1.jpg"
Content-Type: image/jpeg
------WebKitFormBoundaryhWoGW1ZpIbxmmJ0V
Content-Disposition: form-data; name="photo[]"; filename="0FF5B38C59A85EFD49EB4940467798FC.png"
Content-Type: image/png
------WebKitFormBoundaryhWoGW1ZpIbxmmJ0V--
FireFox浏览器
-----------------------------13803311712107636103297225856
Content-Disposition: form-data; name="_csrfToken"
NmR3TGhaWmF1ZzJzaUtNbTBmaE85V3ZReGt3R0pOUUxobXo3OC0xLVc1V0pDSTEzeFNjOEtGZFRGM0xUUWZmZGdUTW1xTEFKQTd4T3RlQ0NodTNUU1E9PQ==
-----------------------------13803311712107636103297225856
Content-Disposition: form-data; name="intl"
54
-----------------------------13803311712107636103297225856
Content-Disposition: form-data; name="name"
..........下面的部分都省略了基本上和Chrome中的一样....................
完整请求案例:
Host: www.cetest.com
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:64.0) Gecko/20100101 Firefox/64.0
Accept: application/json, text/javascript, */*; q=0.01
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Referer: http://www.cetest.com/security/userauth/
X-Requested-With: XMLHttpRequest
Content-Type: multipart/form-data; boundary=---------------------------13803311712107636103297225856
Content-Length: 224703
Connection: keep-alive
Cookie: lang=zh_CN; __zlcmid=p2hjuk7Mu2t6bt; _ga=GA1.2.1972438163.1546501161; USER_PW=505a4b3208e94d00c0d0aa2c0215ef8e; PHPSESSID=63166bc005232efd3b7fd2ade95bddaf; languageStyle=1; USER=1%2Cjson%40163.com%2C%2C%2C0%2C0%2C1%2C0
-----------------------------13803311712107636103297225856
Content-Disposition: form-data; name="_csrfToken"
NmR3TGhaWmF1ZzJzaUtNbTBmaE85V3ZReGt3R0pOUUxobXo3OC0xLVc1V0pDSTEzeFNjOEtGZFRGM0xUUWZmZGdUTW1xTEFKQTd4T3RlQ0NodTNUU1E9PQ==
-----------------------------13803311712107636103297225856
Content-Disposition: form-data; name="intl"
54
-----------------------------13803311712107636103297225856
Content-Disposition: form-data; name="name"
111
-----------------------------13803311712107636103297225856
Content-Disposition: form-data; name="id_type"
1
-----------------------------13803311712107636103297225856
Content-Disposition: form-data; name="id_number"
aaaaa
-----------------------------13803311712107636103297225856
Content-Disposition: form-data; name="photo[]"; filename="0BC4C4D581D1895A6BD859FDE53FE72A.jpg"
Content-Type: image/jpeg
下面还有一堆这样的东西, 应该是上传的文件就不全部粘过来了, 作为理解内容即可.
ÿØÿà
转载于:https://my.oschina.net/chinaliuhan/blog/3064201