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

Qqw*_*qwy 36 javascript ajax xmlhttprequest

AJAX请求和直接浏览器请求之间是否存在差异(就如何调用和加载网页而言)?

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

jfr*_*d00 33

可能存在一些标头差异,但主要行为差异在于客户端.

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

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

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


Mar*_*ahn 28

就服务器而言,AJAX请求 "普通"浏览器请求相同,除了可能略有不同的HTTP头之外.例如chrome发送:

X-Requested-With:XMLHttpRequest
Run Code Online (Sandbox Code Playgroud)

我不知道这头标准化与否,或者如果它在每一个浏览器不同,甚至包括所有在每个浏览器.


编辑:我把它拿回来,那个标题是由jQuery(可能还有其他JS库)发送的,而不是浏览器,如下所示:

var xhr = new XMLHttpRequest();
xhr.open('GET', '/');
xhr.send();
Run Code Online (Sandbox Code Playgroud)

发送:

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
Run Code Online (Sandbox Code Playgroud)

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