2011-07-08 91 views
4

David Flanagan在書籍JavaScript:權威指南第5版中說:在發送AJAX請求之前,您必須發送請求標頭。發送帶有標題的AJAX請求

在跨瀏覽器支持的範圍內,是否需要這樣做?

request.setRequestHeader("User-Agent", "XMLHttpRequest"); 
request.setRequestHeader("Accept-Language", "en"); 
request.setRequestHeader("If-Modified-Since", lastRequestTime.toString()); 

回答

3

在過去的2頭,他們是不是強制性的,在所有的瀏覽器兼容性。這些頭被用作偏好指示(Accept-Language)和內容優化(If-Modified-Since)。

request.setRequestHeader("Accept-Language", "en"); 
request.setRequestHeader("If-Modified-Since", lastRequestTime.toString()); 

第一報頭用於在服務器端,以檢測一個查詢是否從AJAX或簡單地導航完成。較老的瀏覽器默認情況下可能不會設置此標頭,因此如果您的服務器依賴此標頭進行設置,則可能會失去瀏覽器兼容性。如果你的服務器不依賴這個頭文件被設置,如果沒有設置,你將不會失去任何瀏覽器兼容性。

request.setRequestHeader("X-Requested-With", "XMLHttpRequest"); 

注意,第一頭應該是X-Requested-With而不是User-Agent

2

查找到jQuery的指導:

http://code.jquery.com/jquery-latest.js

具體搜索 「X-要求 - 用」。您不需要設置「用戶代理」。不過,您可能希望將「X-Requested-With」設置爲「XMLHttpRequest」。

似乎是很多人試圖重新實現jQuery而沒有查看jQuery或DoJo或MooTools或任何其他JS框架的來源。使用源代碼,盧克。或者只是使用框架並構建一個有用的應用程序,而不是像學術練習一樣重新解決解決的問題。

退房這一系列博客文章從那裏從頭開始建立一個框架dailyjs:

http://dailyjs.com/tags.html#lmaf

+0

我正在完成我對JavaScript的學習,我想徹底。或者,我將切換到jQuery,但暫時知道答案是很好的。謝謝。 –

+0

如果我將「X-Requested-With」設置爲「XMLHttpRequest」,是否會丟失跨瀏覽器支持? –

+0

標題不會像服務器支持那樣影響瀏覽器的支持。請參閱@ HoLyVieR的答案,討論兼容性問題。 –