同一個Web網站有可能存在着多份相同內容的頁面。好比英語版和中文版的Web頁面,它們內容上雖相同,但使用語言卻不一樣。當瀏覽器的默認語言爲英語或中文,訪問相同URL的Web頁面時,則會顯示對應的英語版或中文版的Web頁面。這樣的機制稱爲內容協商(Content Negotiation)。瀏覽器
內容協商機制是指客戶端和服務器端就響應的資源內容進行交涉,而後提供給客戶端最爲適合的資源。內容協商會以響應資源的語言,字符集,編碼方式等做爲判斷的基準。服務器
包含在請求報文中的某些首部字段(以下)就是判斷的基準(這些首部字段的詳細說明後面再講):網站
Accept編碼
Accept-Charsetspa
Accept-Encodingip
Accept-Language資源
Content-Languageio
內容協商技術有如下3種類型:服務器端
服務器驅動協商(Server-driven Negotiation):由服務器端進行內容協商。以請求的首部字段爲參考,在服務器端自動處理。但對用戶來講,以瀏覽器發送的信息做爲斷定的依據,並不必定能篩選出最優內容。coding
客戶端驅動協商(Agent-driven Negotiation):由客戶端進行內容協商的方式。用戶從瀏覽器顯示的可選項列表中手動選擇。還能夠利用JavaScript腳本在Web頁面上自動進行上述選擇。好比按OS的類型或瀏覽器類型,自行切換成PC版頁面或手機版頁面。
透明協商(Transparent Negotiation):是服務器驅動和客戶端驅動的結合體,是由服務器端和客戶端各自進行內容協商的一種方法。