首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> J2EE

HTTP響應頭深度解析:從Google實戰案例看協議細節與安全實踐

     編輯:J2EE

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

關鍵頭部詳解

頭部含義與實踐
DateGMT時間,RFC822格式,客戶端需知時區換算本地時間
Expires: -1立即過期(0/-1同義),禁止緩存
Cache-Control: private, max-age=0private=僅用戶私有緩存;max-age=0=不緩存。public=共享緩存
Content-TypeMIME類型+字符集。Servlet默認text/plain,須顯式設置text/html
Set-CookieNAME=VALUE; Expires=DATE; Path=PATH; Domain=DOMAIN; Secure(HTTPS)。Domain/Path控制訪問範圍
Server: gwsGoogle 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=EmulateIE7IE8兼容模式聲明,遵循DOCTYPE,推薦多數站點

安全啟示

  • 隱藏Server版本減少偵察面
  • HttpOnly Cookie防XSS竊取
  • Vary頭部防緩存投毒
  • 雙重緩存驗證最大化304命中
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved