HTTP 請求頭 / 響應頭速查表
請求頭、響應頭、緩存、CORS 與安全頭,含踩坑要點
共 71 個頭字段
example.com:8080
目標主機與端口,HTTP/1.1 起必填;用於虛擬主機與 TLS SNI 路由
application/json; charset=utf-8
報文體的媒體類型與字符集,接口返回亂碼多半是這裡不對
要點: charset 不匹配也會讓瀏覽器按錯誤編碼解析;JSON 統一用 application/json 不帶 charset 最穩
1024
報文體字節數(不是字符數),中文一個字常佔 3 字節
gzip
報文體壓縮算法,常見 gzip、br、zstd;壓縮的是 length 之後的字節
要點: Content-Length 與 Content-Encoding 同時存在時,length 指的是壓縮前的長度
zh-Hans
報文體面向的自然語言,多語言站點按此與 Accept-Language 協商
attachment; filename="report.csv"
控制瀏覽器是內聯展示還是下載,並給出文件名
要點: 中文文件名要用 filename*=UTF-8 形式,只寫 filename 會亂碼
chunked
分塊傳輸;用 chunked 時不能同時寫 Content-Length
要點: 兩個都寫會被網關判定為請求走私,務必只留一個
keep-alive
連接管理,close 表示本次響應後斷開,upgrade 用於協議升級
timeout=5, max=1000
複用連接的保活參數,空閒超時與最大請求數
1.1 varnish
記錄經過的代理與網關,用於排查鏈路與緩存層級
Sun, 20 Sep 2026 03:30:00 GMT
報文生成時間,必須是 GMT / 格林尼治標準時間格式
text/html,application/json;q=0.9
客戶端可接受的內容類型,可用 q 值表示優先級
要點: 後端按 Accept 返回 406 時,先看這裡與響應的 Content-Type 是否對得上
gzip, br
客戶端支持的壓縮算法,服務端據此決定是否壓縮
zh-CN,zh;q=0.9,en;q=0.8
客戶端偏好的自然語言,多語言站點的語言判定依據
要點: 只按這個頭切語言會讓搜索引擎抓到同一 URL 的不同語言版本,要配 Vary
utf-8
客戶端可接受的字符集,現代瀏覽器基本只報 utf-8
Mozilla/5.0 (Windows NT 10.0; Win64; x64)
客戶端標識,服務端據此做兼容與風控判斷
要點: 服務端別用它做能力判斷,現代瀏覽器會僞裝,UA 裡已無法區分平板與手機
https://example.com/list
來源頁面地址,用於防盜鏈與來源統計
要點: 從 HTTPS 跳到 HTTP 時瀏覽器默認不帶這個頭,防盜鏈會誤傷
bytes=0-1023
只請求資源的一部分字節,斷點續傳與視頻拖動依賴它
要點: 服務端要回 206 而不是 200,回 200 說明沒支持 Range
100-continue
發送大請求體前先問服務端是否接收,避免白傳
要點: 網關不轉發 Expect 時會卡到超時,上傳大文件超時可去掉該頭
websocket
要求升級協議,WebSocket 握手的關鍵頭
要點: 反向代理要同時轉發 Upgrade 與 Connection: upgrade,否則握手失敗
for=203.0.113.1;proto=https
標準化的代理鏈路信息,X-Forwarded-* 的正式替代
203.0.113.1, 10.0.0.5
原始客戶端 IP 鏈,代理逐跳追加,最左側是客戶端
要點: 客戶端可以僞造這個頭,取真實 IP 只能信任自定義或最後一跳的值
https
原始請求協議,反代後應用判斷是否 HTTPS 的依據
203.0.113.1
Nginx 常用的單值客戶端 IP 頭,只保留一個地址
nginx/1.24.0
服務端軟件標識,暴露版本號會給攻擊者省事
要點: 生產環境建議隱藏或只寫 nginx,用 server_tokens off
Basic realm="api"
告知客戶端該用哪種認證方式,必須與 401 一起返回
要點: 返回 403 而不是 401 會讓客戶端不知道該彈認證框還是判定無權限
Basic realm="proxy"
代理要求認證,與 407 配套
https://example.com/new
重定向目標,與 3xx 狀態碼配套使用
要點: 相對路徑在反代與子路徑部署時容易指錯,跨域名必須寫絕對地址
120
告訴客戶端多久後重試,秒數或 HTTP 日期
要點: 429 與 503 都該帶它,否則客戶端容易立刻重試把服務壓垮
GET, POST, HEAD
該資源允許的請求方法,與 405 配套
bytes
聲明支持範圍請求,斷點續傳的前提
bytes 0-1023/4096
部分內容的區間與總長度,與 206 配套
<https://example.com/next>; rel="next"
聲明關聯資源,分頁與預加載會用到
Express
框架指紋,建議關掉以減少信息暴露
*
允許哪些源讀取 Performance 計時數據,跨域測速要用到
h3=":443"; ma=86400
聲明同一資源的其他服務入口,HTTP/3 靠它被發現
public, max-age=3600
緩存策略總開關,no-store 完全不存,no-cache 要回源校驗
要點: no-cache 不是不緩存,而是每次都要回源校驗;想徹底不存要用 no-store
Sun, 20 Sep 2026 04:30:00 GMT
HTTP/1.0 的過期時間,優先級低於 Cache-Control
no-cache
HTTP/1.0 遺留頭,只為兼容舊客戶端,語義同 no-cache
"686897696a7c876b7e"
資源版本指紋,條件請求用它判斷內容是否變化
要點: 多臺服務器各算各的 ETag 會導致緩存頻繁失效,集群要關掉或統一算法
Sat, 19 Sep 2026 12:00:00 GMT
資源最後修改時間,精度只到秒
"686897696a7c876b7e"
帶上上次的 ETag 問服務端有沒有變,沒變回 304
要點: 協商緩存沒生效時先看瀏覽器實際發的 If-None-Match 與響應 ETag 是否一致
Sat, 19 Sep 2026 12:00:00 GMT
按修改時間做條件請求,精度低但兼容性好
"686897696a7c876b7e"
要求資源版本一致才執行寫操作,樂觀鎖的實現方式
要點: 更新接口不帶它會丟更新,配合 412 使用
Sat, 19 Sep 2026 12:00:00 GMT
與 If-Match 同理但按時間判斷,條件不滿足回 412
3600
響應在緩存中已存活的秒數,與 max-age 一起判斷是否過期
Accept-Encoding, Accept-Language
聲明響應隨哪些請求頭變化,緩存必須按這些頭分桶
要點: 漏寫 Vary 會把壓縮版發給不支持壓縮的客戶端,或讓多語言版本互相串
https://app.example.com
請求發起方,瀏覽器自動帶上且頁面無法僞造
https://app.example.com
允許的跨域來源,寫 * 就不能再帶憑證
要點: 帶 Cookie 時必須回顯具體來源,回 * 瀏覽器會直接攔掉響應
GET, POST, PUT, DELETE
預檢請求裡允許的方法
Content-Type, Authorization
預檢請求裡允許的自定義請求頭
要點: 自定義頭不在這個列表裡,預檢直接失敗,瀏覽器控制檯只報 CORS 錯誤
true
是否允許攜帶 Cookie 與認證信息
要點: 設 true 後前端必須同時開 withCredentials,兩邊缺一個都拿不到數據
Content-Disposition
允許前端 JS 讀取的響應頭,默認只能讀少數幾個
要點: 下載文件名拿不到通常就是沒暴露 Content-Disposition
600
預檢結果可緩存多久,減少 OPTIONS 請求
PUT
預檢請求裡聲明真正要用的方法,由瀏覽器自動生成
Authorization
預檢請求裡聲明真正要用的自定義頭
max-age=63072000; includeSubDomains; preload
強制瀏覽器此後只用 HTTPS 訪問,防降級與 Cookie 劫持
要點: preload 一旦提交到瀏覽器預置列表就很難撤回,先用小 max-age 驗證
default-src "self"; object-src "none"
內容安全策略,限定腳本、樣式、圖片等的加載來源,是防 XSS 的主力
要點: 先上 Content-Security-Policy-Report-Only 觀察命中,寫死再切正式頭
SAMEORIGIN
是否允許被 iframe 嵌套,防點擊劫持
要點: 與 CSP 的 frame-ancestors 同時存在時,後者優先
nosniff
禁止瀏覽器猜類型,防止把文本當腳本執行
strict-origin-when-cross-origin
控制跳轉時帶出多少來源信息
camera=(), geolocation=(self)
按功能開關瀏覽器能力,如攝像頭、定位、麥克風
same-origin
隔離瀏覽上下文,是啓用高精度計時與 SharedArrayBuffer 的前提
require-corp
要求所有嵌入資源都聲明允許被嵌入
same-origin
聲明資源只允許同源頁面加載,防跨站讀取
"cache", "cookies"
讓瀏覽器清除本站緩存與 Cookie,退出登錄時常用
要點: 只在 HTTPS 下生效,寫錯引號會靜默失效
0
舊瀏覽器的 XSS 過濾器開關,現已廢棄,建議直接設為 0
要點: 設為 1 反而會引入側信道問題,現代做法是刪掉它改用 CSP
這個工具不好用,或者遇到 bug?
去回報