Search code examples
phpjqueryajaxhttpmobile-website

How to send HTTP headers from client via JQuery AJAX call to PHP script?


I'm using a device detection PHP script on the server, mobiledetect.net and normally the user's browser would make a direct call to that on the server and so obviously the detection script would get all the HTTP headers (that it uses for device detection) directly that way.

If I call the same server side PHP detection script via a JQuery AJAX call from my javascript running on the user's browser, does it receive all the HTTP headers it needs for detection, as it would with the direct method? i.e. does JQuery allow or set all the HTTP headers for the AJAX call on the script as the browser would directly?

If not, how would I achieve this please?

Headers the detection script requires are: HTTP_ACCEPT, HTTP_X_WAP_PROFILE, HTTP_X_WAP_CLIENTID, HTTP_WAP_CONNECTION, HTTP_PROFILE, HTTP_X_OPERAMINI_PHONE_UA, HTTP_X_NOKIA_GATEWAY_ID, HTTP_X_ORANGE_ID, HTTP_X_VODAFONE_3GPDPCONTEXT, HTTP_X_HUAWEI_USERID, HTTP_UA_OS, HTTP_X_MOBILE_GATEWAY, HTTP_X_ATT_DEVICEID, HTTP_UA_CPU

Many thanks.


Solution

  • Yes you can set the HTTP headers in your ajax call :

    $.ajax({
        url: 'YourRestEndPoint',
        headers: {
            'header1':'xxxxxxxxxxxxx',
            'herader2':'xxxxxxxxxxxxxxxxxxxx',
            'Content-Type':'application/json'
        },
        method: 'POST',
        dataType: 'json',
        data: YourData,
        success: function(data){
          console.log('succes: '+data);
        }
      });
    

    Please find more information here :Add Header in AJAX Request with jQuery. To get the value of the HTTP headers, use the following code :

    var req = new XMLHttpRequest();
    req.open('GET', document.location, false);
    req.send(null);
    var headers = req.getAllResponseHeaders().toLowerCase();
    alert(headers);
    

    More information here