2011-07-08 90 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的答案,讨论兼容性问题。 –