HTTP協議基礎
請求/響應模型。響應首行:HTTP-Version Status-Code Reason-Phrase。狀態碼分類:
1xx信息、2xx成功、3xx重定向、4xx客戶端錯誤、5xx服務端錯誤。
Google實戰響應頭逐行解讀
HTTP/1.1 200 OK
Date: Thu, 10 Dec 2009 07:05:24 GMT
Expires: -1
Cache-Control: private, max-age=0
Content-Type: text/html; charset=ISO-8859-1
Set-Cookie: PREF=ID=953749d231aac991:NW=1:TM=1260428724:LM=1260428724:S=SVO8GYM45lSw23HR; expires=Sat, 10-Dec-2011 07:05:24 GMT; path=/; domain=.google.com
Set-Cookie: NID=29=jKOWKRrA8bkt3pZGQMD9YWpUviUid2XJ-e9ja4X4gCHs7aS9xpSkEGaOVSiXcxH0I-0qroLXOhkrn7_kygkXzqMwq3llEen9UsdNkuFTProfDO2i4FoMvSuJBJTPrXZv; expires=Fri, 11-Jun-2010 07:05:24 GMT; path=/; domain=.google.com; HttpOnly
Server: gws
X-XSS-Protection: 0
Transfer-Encoding: chunked
關鍵頭部詳解
| 頭部 | 含義與實踐 |
| Date | GMT時間,RFC822格式,客戶端需知時區換算本地時間 |
| Expires: -1 | 立即過期(0/-1同義),禁止緩存 |
| Cache-Control: private, max-age=0 | private=僅用戶私有緩存;max-age=0=不緩存。public=共享緩存 |
| Content-Type | MIME類型+字符集。Servlet默認text/plain,須顯式設置text/html |
| Set-Cookie | NAME=VALUE; Expires=DATE; Path=PATH; Domain=DOMAIN; Secure(HTTPS)。Domain/Path控制訪問範圍 |
| Server: gws | Google Web Server,隱藏具體版本屬安全最佳實踐 |
| X-XSS-Protection: 0 | 關閉IE8+內建XSS過濾器。兼容性考慮:某些頁面腳本會被誤判拦截 |
| Transfer-Encoding: chunked | 內容長度未知時分塊傳輸,HTTP/1.1強制支援 |
進階緩存控制頭部
Last-Modified / If-Modified-Since
- 首次響應附帶
Last-Modified
- 再次請求攜帶
If-Modified-Since
- 未修改返回304 Not Modified(空體),節省帶寬
ETag / If-None-Match
- 實體標籤(Token),服務端生成規則自定義
- 斷點下載、強驗證場景更可靠
- 最佳實踐:雙重驗證(Last-Modified + ETag)最大化緩存命中
其他常見頭部速查
| 頭部 | 用途 |
| Age | 代理緩存實體存活秒數 |
| Content-Length | 響應體字節數,持久連接必需 |
| Accept-Ranges: bytes | 支援範圍請求(斷點續傳) |
| Vary: Accept-Encoding | 指導代理緩存:不同編碼存儲不同副本,防gzip內容誤傳非支援瀏覽器 |
| Connection: keep-alive/close | 連接復用控制 |
| Keep-Alive: 300 | 連接保持秒數 |
| X-Cache: HIT from proxy | 反向代理緩存命中標記 |
| X-UA-Compatible: IE=EmulateIE7 | IE8兼容模式聲明,遵循DOCTYPE,推薦多數站點 |
安全啟示
- 隱藏Server版本減少偵察面
- HttpOnly Cookie防XSS竊取
- Vary頭部防緩存投毒
- 雙重緩存驗證最大化304命中