2016-03-07 160 views

回答

5

如果我們假設HTTP 1.1服務器希望後向兼容HTTP 1.0客戶端,那麼HTTP 1.1服務器會向HTTP 1.0客戶端發送HTTP 1.0響應。

例如,讓我們假設你的HTTP 1.0客戶端發送這樣的請求:

GET /path/to/resource HTTP/1.0 

注意,請求的最後一部分是「HTTP/1.0」,表示客戶端支持的HTTP版本。我們會回到這一點,但這很重要。

您的HTTP 1.1服務器可能通常需要使用Cache-Control響應標頭來禁用任何緩存,例如

HTTP/1.1 200 OK 
Cache-Control: no-cache 

但是Cache-Control不支持HTTP 1.0請求,上述響應表示它是一個HTTP 1.1的反應,這是奇數,給出的HTTP 1.0請求。

因此取而代之的是,HTTP 1.1服務器必須產生一個HTTP 1.0兼容的響應,就像這樣:

HTTP/1.0 200 OK 
Pragma: no-cache 

的HTTP 1.1服務器非常注重在請求的HTTP版本,並構造一個響應對於該HTTP版本而言適當的。對於與較新的向後兼容服務器(,例如 HTTP 1.1)進行通信的舊客戶端(。例如HTTP1.0),這是有效的。

會發生什麼,但是,如果它是一個較新的客戶交談的年長服務器,如HTTP 1.1客戶交談的HTTP 1.0服務器?在這種情況下,該請求可能是:

GET /path/to/resource HTTP/1.1 
Host: example.com 
Cache-Control: no-cache 

的HTTP 1.0服務器將不知道有關Cache-Control頭,或任何其他HTTP 1.1-主義。在這種情況下,由於版本不兼容,HTTP 1.0服務器可能會因使用「400錯誤請求」(或其他類似的不成功響應代碼)而拒絕響應,服務器可能會向HTTP 1.1發出HTTP 1.0響應請求:

HTTP/1.0 200 OK 
Pragma: no-cache 

您看到的實際行爲將取決於所涉及的客戶端和服務器實現。

希望這會有所幫助!

相關問題