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());
答案 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的这一系列博客文章,他们从头开始构建框架: