一,內容協商(Content Negotiation)
同一個Web網站可能存在很多份相同內容的頁面,比如英文版和中文版的Web頁面,它們內容上相同,但是使用語言不同。比如大家進入英文版的google首頁和中文版的google首頁,頁面元素佈局一致,但是顯示的語言不同。
當瀏覽器的默認語言爲英文或者中文,訪問相同URI的Web頁面時候,就返回對應的英文或中文的Web頁面,這種機制稱爲內容協商(Content Negotiation)。
內容協商機制是指客戶端和服務器就響應資源的內容進行交涉,然後提供給客戶端最爲合適的資源。內容協商會以響應資源的語言,字符集,編碼方式等作爲判斷基準。
二,內容協商相關的首部字段
包含在請求報文中的某些首部字段就是內容協商判斷的基準。
Accept
Accept-Charset
Accept-Encoding
Accept-Language
Content-Language
三,內容協商技術的類型
內容協商技術有下面三種類型
1 服務器驅動協商(Server-driven Negotiation)
由服務器端進行內容協商。以請求的首部字段作爲參考,在服務器端自動處理。對於用戶來說,以瀏覽器發送的信息爲判斷依據,並不一定能篩選出最優內容。
2 客戶端驅動協商(Agent-driven Negotiation)
由客戶端進行內容協商的方式。用戶從瀏覽器顯示的可選項列表中手動選擇。還可以利用javaScript腳本在Web頁面中自動進行上述選擇。比如按OS的類型或者瀏覽器類型,自行切換成PC版頁面或者手機版頁面
3 透明協商(Transparent Negotiation)
是服務器驅動和客戶端驅動的結合體,是由服務器和客戶端各自進行內容協商的一種方法。