前端必備HTTP技能之HTTP請(qǐng)求頭響應(yīng)頭中常用字段詳解

作為一名前端開(kāi)發(fā)人員,肯定少不了要和網(wǎng)絡(luò)打交道,因?yàn)橐獜姆?wù)器端拉取數(shù)據(jù),從服務(wù)端獲取數(shù)據(jù)最常用的方式還是通過(guò)HTTP請(qǐng)求。給服務(wù)器發(fā)請(qǐng)求的時(shí)候有請(qǐng)求頭,接受服務(wù)器響應(yīng)的時(shí)候有響應(yīng)頭,客戶(hù)端和服務(wù)器端互相溝通需要的信息都是通過(guò)這些“頭”來(lái)傳送,這些信息是一些類(lèi)似key:value的鍵值對(duì)。了解這些“頭”中字段的含義對(duì)于理解整個(gè)請(qǐng)求過(guò)程有很大的幫助。這里列舉了常用的“頭”字段的解釋以及例子,本文可以作為工具文收藏,以備需要時(shí)查看。

常用標(biāo)準(zhǔn)請(qǐng)求頭字段#####

Accept 設(shè)置接受的內(nèi)容類(lèi)型

Accept: text/plain

Accept-Charset 設(shè)置接受的字符編碼

Accept-Charset: utf-8

Accept-Encoding 設(shè)置接受的編碼格式

Accept-Encoding: gzip, deflate

Accept-Datetime 設(shè)置接受的版本時(shí)間

Accept-Datetime: Thu, 31 May 2007 20:35:00 GMT

Accept-Language 設(shè)置接受的語(yǔ)言

Accept-Language: en-US

Authorization 設(shè)置HTTP身份驗(yàn)證的憑證

Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==

Cache-Control 設(shè)置請(qǐng)求響應(yīng)鏈上所有的緩存機(jī)制必須遵守的指令

Cache-Control: no-cache

Connection 設(shè)置當(dāng)前連接和hop-by-hop協(xié)議請(qǐng)求字段列表的控制選項(xiàng)

Connection: keep-alive
Connection: Upgrade

Content-Length 設(shè)置請(qǐng)求體的字節(jié)長(zhǎng)度

Content-Length: 348

Content-MD5 設(shè)置基于MD5算法對(duì)請(qǐng)求體內(nèi)容進(jìn)行Base64二進(jìn)制編碼

Content-MD5: Q2hlY2sgSW50ZWdyaXR5IQ==

Content-Type 設(shè)置請(qǐng)求體的MIME類(lèi)型(適用POST和PUT請(qǐng)求)

Content-Type: application/x-www-form-urlencoded

Cookie 設(shè)置服務(wù)器使用Set-Cookie發(fā)送的http cookie

Cookie: $Version=1; Skin=new;

Date 設(shè)置消息發(fā)送的日期和時(shí)間

Date: Tue, 15 Nov 1994 08:12:31 GMT

Expect 標(biāo)識(shí)客戶(hù)端需要的特殊瀏覽器行為

Expect: 100-continue

Forwarded 披露客戶(hù)端通過(guò)http代理連接web服務(wù)的源信息

Forwarded: for=192.0.2.60;proto=http;by=203.0.113.43
Forwarded: for=192.0.2.43, for=198.51.100.17

From 設(shè)置發(fā)送請(qǐng)求的用戶(hù)的email地址

From: user@example.com

Host 設(shè)置服務(wù)器域名和TCP端口號(hào),如果使用的是服務(wù)請(qǐng)求標(biāo)準(zhǔn)端口號(hào),端口號(hào)可以省略

Host: en.wikipedia.org:8080
Host: en.wikipedia.org

If-Match 設(shè)置客戶(hù)端的ETag,當(dāng)時(shí)客戶(hù)端ETag和服務(wù)器生成的ETag一致才執(zhí)行,適用于更新自從上次更新之后沒(méi)有改變的資源

If-Match: "737060cd8c284d8af7ad3082f209582d

If-Modified-Since 設(shè)置更新時(shí)間,從更新時(shí)間到服務(wù)端接受請(qǐng)求這段時(shí)間內(nèi)如果資源沒(méi)有改變,允許服務(wù)端返回304 Not Modified

If-Modified-Since: Sat, 29 Oct 1994 19:43:31 GMT

If-None-Match 設(shè)置客戶(hù)端ETag,如果和服務(wù)端接受請(qǐng)求生成的ETage相同,允許服務(wù)端返回304 Not Modified

If-None-Match: "737060cd8c284d8af7ad3082f209582d"

If-Range 設(shè)置客戶(hù)端ETag,如果和服務(wù)端接受請(qǐng)求生成的ETage相同,返回缺失的實(shí)體部分;否則返回整個(gè)新的實(shí)體

If-Range: "737060cd8c284d8af7ad3082f209582d"

If-Unmodified-Since 設(shè)置更新時(shí)間,只有從更新時(shí)間到服務(wù)端接受請(qǐng)求這段時(shí)間內(nèi)實(shí)體沒(méi)有改變,服務(wù)端才會(huì)發(fā)送響應(yīng)

If-Unmodified-Since: Sat, 29 Oct 1994 19:43:31 GMT

Max-Forwards 限制代理或網(wǎng)關(guān)轉(zhuǎn)發(fā)消息的次數(shù)

Max-Forwards: 10

Origin 標(biāo)識(shí)跨域資源請(qǐng)求(請(qǐng)求服務(wù)端設(shè)置Access-Control-Allow-Origin響應(yīng)字段)

Origin: http://www.example-social-network.com

Pragma 設(shè)置特殊實(shí)現(xiàn)字段,可能會(huì)對(duì)請(qǐng)求響應(yīng)鏈有多種影響

Pragma: no-cache

Proxy-Authorization 為連接代理授權(quán)認(rèn)證信息

Proxy-Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==

Range 請(qǐng)求部分實(shí)體,設(shè)置請(qǐng)求實(shí)體的字節(jié)數(shù)范圍,具體可以參見(jiàn)HTTP/1.1中的Byte serving

Range: bytes=500-999

Referer 設(shè)置前一個(gè)頁(yè)面的地址,并且前一個(gè)頁(yè)面中的連接指向當(dāng)前請(qǐng)求,意思就是如果當(dāng)前請(qǐng)求是在A頁(yè)面中發(fā)送的,那么referer就是A頁(yè)面的url地址(軼事:這個(gè)單詞正確的拼法應(yīng)該是"referrer",但是在很多規(guī)范中都拼成了"referer",所以這個(gè)單詞也就成為標(biāo)準(zhǔn)用法)

Referer: http://en.wikipedia.org/wiki/Main_Page

TE 設(shè)置用戶(hù)代理期望接受的傳輸編碼格式,和響應(yīng)頭中的Transfer-Encoding字段一樣

TE: trailers, deflate

Upgrade 請(qǐng)求服務(wù)端升級(jí)協(xié)議

Upgrade: HTTP/2.0, HTTPS/1.3, IRC/6.9, RTA/x11, websocket

User-Agent 用戶(hù)代理的字符串值

User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:12.0) Gecko/20100101 Firefox/21.0

Via 通知服務(wù)器代理請(qǐng)求

Via: 1.0 fred, 1.1 example.com (Apache/1.1)

Warning 實(shí)體可能會(huì)發(fā)生的問(wèn)題的通用警告

Warning: 199 Miscellaneous warning

常用非標(biāo)準(zhǔn)請(qǐng)求頭字段#####

X-Requested-With 標(biāo)識(shí)Ajax請(qǐng)求,大部分js框架發(fā)送請(qǐng)求時(shí)都會(huì)設(shè)置它為XMLHttpRequest

X-Requested-With: XMLHttpRequest

DNT 請(qǐng)求web應(yīng)用禁用用戶(hù)追蹤

DNT: 1 (Do Not Track Enabled)
DNT: 0 (Do Not Track Disabled)

X-Forwarded-For 一個(gè)事實(shí)標(biāo)準(zhǔn),用來(lái)標(biāo)識(shí)客戶(hù)端通過(guò)HTTP代理或者負(fù)載均衡器連接的web服務(wù)器的原始IP地址

X-Forwarded-For: client1, proxy1, proxy2
X-Forwarded-For: 129.78.138.66, 129.78.64.103

X-Forwarded-Host 一個(gè)事實(shí)標(biāo)準(zhǔn),用來(lái)標(biāo)識(shí)客戶(hù)端在HTTP請(qǐng)求頭中請(qǐng)求的原始host,因?yàn)橹鳈C(jī)名或者反向代理的端口可能與處理請(qǐng)求的原始服務(wù)器不同

X-Forwarded-Host: en.wikipedia.org:8080
X-Forwarded-Host: en.wikipedia.org

X-Forwarded-Proto 一個(gè)事實(shí)標(biāo)準(zhǔn),用來(lái)標(biāo)識(shí)HTTP原始協(xié)議,因?yàn)榉聪虼砘蛘哓?fù)載均衡器和web服務(wù)器可能使用http,但是請(qǐng)求到反向代理使用的是https

X-Forwarded-Proto: https

Front-End-Https 微軟應(yīng)用程序和負(fù)載均衡器使用的非標(biāo)準(zhǔn)header字段 Front-End-Https: on
X-Http-Method-Override 請(qǐng)求web應(yīng)用時(shí),使用header字段中給定的方法(通常是put或者delete)覆蓋請(qǐng)求中指定的方法(通常是post),如果用戶(hù)代理或者防火墻不支持直接使用put或者delete方法發(fā)送請(qǐng)求時(shí),可以使用這個(gè)字段

X-HTTP-Method-Override: DELETE

X-ATT-DeviceId 允許更簡(jiǎn)單的解析用戶(hù)代理在AT&T設(shè)備上的MakeModel/Firmware

X-Att-Deviceid: GT-P7320/P7320XXLPG

X-Wap-Profile 設(shè)置描述當(dāng)前連接設(shè)備的詳細(xì)信息的xml文件在網(wǎng)絡(luò)中的位置

x-wap-profile: http://wap.samsungmobile.com/uaprof/SGH-I777.xml

Proxy-Connection 早起HTTP版本中的一個(gè)誤稱(chēng),現(xiàn)在使用標(biāo)準(zhǔn)的connection字段

Proxy-Connection: keep-alive

X-UIDH 服務(wù)端深度包檢測(cè)插入的一個(gè)唯一ID標(biāo)識(shí)Verizon Wireless的客戶(hù)

X-UIDH: ...

X-Csrf-Token,X-CSRFToken,X-XSRF-TOKEN 防止跨站請(qǐng)求偽造

X-Csrf-Token: i8XNjC4b8KVok4uw5RftR38Wgp2BFwql

X-Request-ID,X-Correlation-ID 標(biāo)識(shí)客戶(hù)端和服務(wù)端的HTTP請(qǐng)求

X-Request-ID: f058ebd6-02f7-4d3f-942e-904344e8cde5

常用標(biāo)準(zhǔn)響應(yīng)頭字段#####

Access-Control-Allow-Origin 指定哪些站點(diǎn)可以參與跨站資源共享

Access-Control-Allow-Origin: *

Accept-Patch 指定服務(wù)器支持的補(bǔ)丁文檔格式,適用于http的patch方法

Accept-Patch: text/example;charset=utf-8

Accept-Ranges 服務(wù)器通過(guò)byte serving支持的部分內(nèi)容范圍類(lèi)型

Accept-Ranges: bytes

Age 對(duì)象在代理緩存中暫存的秒數(shù)

Age: 12

Allow 設(shè)置特定資源的有效行為,適用方法不被允許的http 405錯(cuò)誤

Allow: GET, HEAD

Alt-Svc 服務(wù)器使用"Alt-Svc"(Alternative Servicesde的縮寫(xiě))頭標(biāo)識(shí)資源可以通過(guò)不同的網(wǎng)絡(luò)位置或者不同的網(wǎng)絡(luò)協(xié)議獲取

Alt-Svc: h2="http2.example.com:443"; ma=7200

Cache-Control 告訴服務(wù)端到客戶(hù)端所有的緩存機(jī)制是否可以緩存這個(gè)對(duì)象,單位是秒

Cache-Control: max-age=3600

Connection 設(shè)置當(dāng)前連接和hop-by-hop協(xié)議請(qǐng)求字段列表的控制選項(xiàng)

Connection: close

Content-Disposition 告訴客戶(hù)端彈出一個(gè)文件下載框,并且可以指定下載文件名

Content-Disposition: attachment; filename="fname.ext"

Content-Encoding 設(shè)置數(shù)據(jù)使用的編碼類(lèi)型

Content-Encoding: gzip

Content-Language 為封閉內(nèi)容設(shè)置自然語(yǔ)言或者目標(biāo)用戶(hù)語(yǔ)言

Content-Language: en

Content-Length 響應(yīng)體的字節(jié)長(zhǎng)度

Content-Length: 348

Content-Location 設(shè)置返回?cái)?shù)據(jù)的另一個(gè)位置

Content-Location: /index.htm

Content-MD5 設(shè)置基于MD5算法對(duì)響應(yīng)體內(nèi)容進(jìn)行Base64二進(jìn)制編碼

Content-MD5: Q2hlY2sgSW50ZWdyaXR5IQ==

Content-Range 標(biāo)識(shí)響應(yīng)體內(nèi)容屬于完整消息體中的那一部分

Content-Range: bytes 21010-47021/47022

Content-Type 設(shè)置響應(yīng)體的MIME類(lèi)型

Content-Type: text/html; charset=utf-8

Date 設(shè)置消息發(fā)送的日期和時(shí)間

Date: Tue, 15 Nov 1994 08:12:31 GMT

ETag 特定版本資源的標(biāo)識(shí)符,通常是消息摘要

ETag: "737060cd8c284d8af7ad3082f209582d"

Expires 設(shè)置響應(yīng)體的過(guò)期時(shí)間

Expires: Thu, 01 Dec 1994 16:00:00 GMT

Last-Modified 設(shè)置請(qǐng)求對(duì)象最后一次的修改日期

Last-Modified: Tue, 15 Nov 1994 12:45:26 GMT

Link 設(shè)置與其他資源的類(lèi)型關(guān)系

Link: </feed>; rel="alternate"

Location 在重定向中或者創(chuàng)建新資源時(shí)使用

Location: http://www.w3.org/pub/WWW/People.html

P3P 以P3P:CP="your_compact_policy"的格式設(shè)置支持P3P(Platform for Privacy Preferences Project)策略,大部分瀏覽器沒(méi)有完全支持P3P策略,許多站點(diǎn)設(shè)置假的策略?xún)?nèi)容欺騙支持P3P策略的瀏覽器以獲取第三方cookie的授權(quán)

P3P: CP="This is not a P3P policy! See http://www.google.com/support/accounts/bin/answer.py?hl=en&answer=151657 for more info."

Pragma 設(shè)置特殊實(shí)現(xiàn)字段,可能會(huì)對(duì)請(qǐng)求響應(yīng)鏈有多種影響

Pragma: no-cache

Proxy-Authenticate 設(shè)置訪問(wèn)代理的請(qǐng)求權(quán)限

Proxy-Authenticate: Basic

Public-Key-Pins 設(shè)置站點(diǎn)的授權(quán)TLS證書(shū)

Public-Key-Pins: max-age=2592000; pin-sha256="E9CZ9INDbd+2eRQozYqqbQ2yXLVKB9+xcprMF+44U1g=";

Refresh "重定向或者新資源創(chuàng)建時(shí)使用,在頁(yè)面的頭部有個(gè)擴(kuò)展可以實(shí)現(xiàn)相似的功能,并且大部分瀏覽器都支持
<meta http-equiv="refresh" content="5; url=http://example.com/">

Refresh: 5; url=http://www.w3.org/pub/WWW/People.html

Retry-After 如果實(shí)體暫時(shí)不可用,可以設(shè)置這個(gè)值讓客戶(hù)端重試,可以使用時(shí)間段(單位是秒)或者HTTP時(shí)間

Example 1: Retry-After: 120
Example 2: Retry-After: Fri, 07 Nov 2014 23:59:59 GMT

Server 服務(wù)器名稱(chēng)

Server: Apache/2.4.1 (Unix)

Set-Cookie 設(shè)置HTTP Cookie

Set-Cookie: UserID=JohnDoe; Max-Age=3600; Version=1

Status 設(shè)置HTTP響應(yīng)狀態(tài)

Status: 200 OK

Strict-Transport-Security 一種HSTS策略通知HTTP客戶(hù)端緩存HTTPS策略多長(zhǎng)時(shí)間以及是否應(yīng)用到子域

Strict-Transport-Security: max-age=16070400; includeSubDomains

Trailer 標(biāo)識(shí)給定的header字段將展示在后續(xù)的chunked編碼的消息中

Trailer: Max-Forwards

Transfer-Encoding 設(shè)置傳輸實(shí)體的編碼格式,目前支持的格式: chunked, compress, deflate, gzip, identity

Transfer-Encoding: chunked

TSV Tracking Status Value,在響應(yīng)中設(shè)置給DNT(do-not-track),可能的取值

   "!" — under construction

   "?" — dynamic

   "G" — gateway to multiple parties

   "N" — not tracking

   "T" — tracking

   "C" — tracking with consent

   "P" — tracking only if consented

   "D" — disregarding DNT

   "U" — updated

TSV: ?

Upgrade 請(qǐng)求客戶(hù)端升級(jí)協(xié)議

Upgrade: HTTP/2.0, HTTPS/1.3, IRC/6.9, RTA/x11, websocket

Vary 通知下級(jí)代理如何匹配未來(lái)的請(qǐng)求頭已讓其決定緩存的響應(yīng)是否可用而不是重新從源主機(jī)請(qǐng)求新的

Example 1: Vary: *
Example 2: Vary: Accept-Language

Via 通知客戶(hù)端代理,通過(guò)其要發(fā)送什么響應(yīng)

Via: 1.0 fred, 1.1 example.com (Apache/1.1)

Warning 實(shí)體可能會(huì)發(fā)生的問(wèn)題的通用警告

Warning: 199 Miscellaneous warning

WWW-Authenticate 標(biāo)識(shí)訪問(wèn)請(qǐng)求實(shí)體的身份驗(yàn)證方案

WWW-Authenticate: Basic

X-Frame-Options 點(diǎn)擊劫持保護(hù):

   deny frame中不渲染

   sameorigin 如果源不匹配不渲染

   allow-from 允許指定位置訪問(wèn)

   allowall 不標(biāo)準(zhǔn),允許任意位置訪問(wèn)

X-Frame-Options: deny

常用非標(biāo)準(zhǔn)響應(yīng)頭字段#####

X-XSS-Protection 過(guò)濾跨站腳本

X-XSS-Protection: 1; mode=block

Content-Security-Policy, X-Content-Security-Policy,X-WebKit-CSP 定義內(nèi)容安全策略

X-WebKit-CSP: default-src 'self'

X-Content-Type-Options 唯一的取值是"",阻止IE在響應(yīng)中嗅探定義的內(nèi)容格式以外的其他MIME格式

X-Content-Type-Options: nosniff

X-Powered-By 指定支持web應(yīng)用的技術(shù)

X-Powered-By: PHP/5.4.0

X-UA-Compatible 推薦首選的渲染引擎來(lái)展示內(nèi)容,通常向后兼容,也用于激活I(lǐng)E中內(nèi)嵌chrome框架插件
<meta http-equiv="X-UA-Compatible" content="chrome=1" />

X-UA-Compatible: IE=EmulateIE7
X-UA-Compatible: IE=edge
X-UA-Compatible: Chrome=1

X-Content-Duration 提供音視頻的持續(xù)時(shí)間,單位是秒,只有Gecko內(nèi)核瀏覽器支持

X-Content-Duration: 42.666

Upgrade-Insecure-Requests 標(biāo)識(shí)服務(wù)器是否可以處理HTTPS協(xié)議

Upgrade-Insecure-Requests: 1

X-Request-ID,X-Correlation-ID 標(biāo)識(shí)一個(gè)客戶(hù)端和服務(wù)端的請(qǐng)求

X-Request-ID: f058ebd6-02f7-4d3f-942e-904344e8cde5

像這種條目信息最佳的展示形式肯定是表格,但是markdown格式渲染出來(lái)的表格,在電腦上勉強(qiáng)可以看,手機(jī)根本無(wú)法閱讀,主要是因?yàn)槊總€(gè)條目信息內(nèi)容長(zhǎng)度不一致,所以寫(xiě)的時(shí)候就沒(méi)有使用表格,我在github上上傳一個(gè)excel版本的http頭字段的說(shuō)明,查看起來(lái)比較清晰,本人有時(shí)查看某些頭字段值時(shí),都是用excel版本的,你可以點(diǎn)這里下載。

這些條目解釋的來(lái)源是維基百科,本人只是簡(jiǎn)單翻譯,方便快速查看,如果想了解具體條目解釋?zhuān)梢圆榭丛闹袑?duì)應(yīng)字段的引用,原文地址在這里

做好前端開(kāi)發(fā)必須對(duì)HTTP的相關(guān)知識(shí)有所了解,所以我創(chuàng)建了一個(gè)專(zhuān)題前端必備HTTP技能專(zhuān)門(mén)收集前端相關(guān)的HTTP知識(shí),歡迎關(guān)注,投稿。


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,554評(píng)論 19 139
  • 本篇文章篇幅比較長(zhǎng),先來(lái)個(gè)思維導(dǎo)圖預(yù)覽一下。 一、概述 1.計(jì)算機(jī)網(wǎng)絡(luò)體系結(jié)構(gòu)分層 2.TCP/IP 通信傳輸流 ...
    滌生_Woo閱讀 56,204評(píng)論 24 557
  • 一、概念(載錄于:http://www.cnblogs.com/EricaMIN1987_IT/p/3837436...
    yuantao123434閱讀 8,741評(píng)論 6 152
  • 本文是《圖解HTTP》讀書(shū)筆記的第二篇,主要包括此書(shū)的第六章內(nèi)容,因?yàn)榈诹碌膬?nèi)容較多,而且比較重要,所以單獨(dú)寫(xiě)為...
    lijiankun24閱讀 1,499評(píng)論 0 6
  • 一 小A總是喜歡說(shuō):“唉,沒(méi)妹子啊,我覺(jué)得我顏值可以啊,怎么沒(méi)有女朋友。”其實(shí)小A是個(gè)很上進(jìn)的人,成績(jī)不錯(cuò),熱愛(ài)健...
    何不歸去來(lái)兮閱讀 340評(píng)論 10 6

友情鏈接更多精彩內(nèi)容