使用标头发送AJAX请求

时间:2011-07-08 23:24:25

标签: javascript ajax cross-browser http-headers

David Flanagan撰写的JavaScript:The Definitive Guide,第5版中说:在发送AJAX请求之前,您必须发送请求标题。

在跨浏览器支持的范围内,我是否需要这样做?

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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