javascriptajaxxmlhttprequest

Difference between AJAX request and a regular browser request


Is there a difference between an AJAX request and a direct browser request (in terms of how a web page is called and loaded)?

In other words, I mean: is a direct server-side request handled in any way differently than a client-side request (initiated by the browser)?


Solution

  • An AJAX request is identical to a "normal" browser request as far as the server is concerned other than potentially slightly different HTTP headers. e.g. chrome sends:

    X-Requested-With:XMLHttpRequest
    

    I'm not sure if that header is standardized or not, or if it's different in every browser or even included at all in every browser.


    edit: I take that back, that header is sent by jQuery (and likely other JS libraries), not the browser as is evidenced by:

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

    which sends:

    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
    

    which leads me to the conclusion that by default there is absolutely no difference.