如何通过 JQuery AJAX 调用 PHP 脚本从客户端发送 HTTP headers?

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

我在服务器上使用设备检测 PHP 脚本,mobiledetect.net 通常用户的浏览器会直接调用服务器上的那个,所以很明显检测脚本会得到所有 HTTP headers(它用于设备检测)都直接通过这种方式。

如果我在用户浏览器上通过 JQuery AJAX 调用从我的 javascript 运行 调用相同的服务器端 PHP 检测脚本,它接收检测所需的所有 HTTP headers,就像使用直接方法一样?即 JQuery 是否允许或设置所有 HTTP headers 以便浏览器直接对脚本调用 AJAX?

如果没有,我该如何实现?

Headers检测脚本要求为: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

非常感谢。

是的,您可以在 ajax 调用中设置 HTTP headers:

$.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);
    }
  });

请在此处查找更多信息:Add Header in AJAX Request with jQuery。 要获取 HTTP headers 的值,请使用以下代码:

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

更多信息here