使用标头发送AJAX请求

4
在David Flanagan的《JavaScript权威指南》第五版中提到,在发送AJAX请求之前,您需要发送请求头。
在跨浏览器支持范围内,我需要这样做吗?
request.setRequestHeader("User-Agent", "XMLHttpRequest");
request.setRequestHeader("Accept-Language", "en");
request.setRequestHeader("If-Modified-Since", lastRequestTime.toString()); 
2个回答

3
对于最后两个标头,它们对于浏览器兼容性来说并不是必需的。这些标头用作优先语言指示(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-Requested-With”。您不需要设置“User-Agent”。您可能希望将“X-Requested-With”设置为“XMLHttpRequest”。

似乎有很多人试图重新实现jQuery而没有查看jQuery、DoJo、MooTools或任何其他JS框架的源代码。使用源代码,卢克。或者只是使用框架并构建一个有用的应用程序,而不是作为学术练习重新解决已解决的问题。

查看dailyjs的这一系列博客文章,其中他们从头开始构建一个框架:

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


我正在完成对JavaScript的学习,并且希望做到彻底。或者,我会转向jQuery,但目前知道答案会很好。谢谢。 - Dexy_Wolf
如果我将“X-Requested-With”设置为“XMLHttpRequest”,是否会失去跨浏览器支持? - Dexy_Wolf
头文件并不会对浏览器支持产生太大的影响,而是更多地影响服务器支持。请参考@HoLyVieR的答案,其中讨论了兼容性方面的影响。 - Peter Lyons

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接