AJAX 请求和常规浏览器请求之间的区别

新手上路,请多包涵

AJAX 请求和直接浏览器请求之间有区别吗(就如何调用和加载网页而言)?

换句话说,我的意思是:服务器端直接请求的处理方式是否与客户端请求(由浏览器发起)不同?

原文由 Qqwy 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 561
2 个回答

就服务器而言,AJAX 请求 _与_“正常”浏览器请求相同,只是 HTTP 标头可能略有不同。例如 chrome 发送:

 X-Requested-With:XMLHttpRequest

我不确定该标头是否标准化,或者它在每个浏览器中是否不同,甚至是否包含 每个浏览器中。


编辑:我收回那句话,该标头是由 jQuery(可能还有其他 JS 库)发送的,而不是由浏览器发送的,如下所示:

 var xhr = new XMLHttpRequest();
xhr.open('GET', '/');
xhr.send();

发送:

 Accept:*/*
Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8
Connection:keep-alive
Cookie: ....
Host:stackoverflow.com
If-Modified-Since:Sat, 31 Dec 2011 01:57:24 GMT
Referer:http://stackoverflow.com/questions/8685750/how-does-an-ajax-request-differ-from-a-normal-browser-request/8685758
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_7) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.12 Safari/535.11

这让我得出结论, 默认情况下 绝对没有区别。

原文由 user578895 发布,翻译遵循 CC BY-SA 3.0 许可协议

可能有一些标头差异,但主要的行为差异在于客户端。

当浏览器发出 window.location.href = "index.html" 中的常规请求时,它会清除当前窗口并将服务器响应加载到窗口中。

使用 ajax 请求,当前窗口/文档不受影响,javascript 代码可以检查请求的结果并对这些结果执行它想要的操作(将 HTML 动态插入页面,解析 JSON 并将其用于页面逻辑,解析 XML , ETC…)。

服务器没有做任何不同的事情——只是客户端如何处理来自两个请求的响应。

原文由 jfriend00 发布,翻译遵循 CC BY-SA 3.0 许可协议

推荐问题