添加授权标头后的OPTIONS方法而不是GET

问题描述 投票:0回答:2

我有一个usb指纹扫描仪,可以通过以下端口和ip使用REST访问:http://127.0.0.1:30666/foh/UCBioAPI/devices它在Postman中正常工作,如下面的截图所示:

enter image description here

但是我无法使用jQuery Ajax。

var url2 = 'http://127.0.0.1:30666/foh/UCBioAPI/devices';
            $.ajax({
                type: "GET",
                url: url2,
                headers: {
                    "authorization": "Basic " + btoa('user' + ":" + 'user'),
                },
                success: function (data) {
                    console.log(data);
                    alert('done!');
                }, error: function (data) {
                    console.log(data);
                    alert('error');
                }
            });

会发生什么(设备不接受OPTIONS可能并且不可修改):enter image description here

enter image description here

问题是我无法改变设备的工作方式。我唯一可以修改的是我的javascript代码。我的服务器在IIS 10中工作,并且基本上是相同的域 - localhost。提前致谢。

javascript jquery http
2个回答
3
投票

Postman没有使用CORS沙箱并完全跳过它。浏览器以不同的方式运行。它在执行实际请求之前发送用于CORS身份验证的数据。 OPTIONS请求就是那个。它包含原始,主机和实际请求类型,因此服务器可以决定是否应该接受它。

如果您无法更改设备上的代码,那么您将无法运行,它将无法运行。

以防万一,有一篇关于CORS的好文章:https://www.html5rocks.com/en/tutorials/cors/


-1
投票

尝试使用beforeSend函数而不是headers

beforeSend: function (xhr) {
    xhr.setRequestHeader ("Authorization", "Basic " + btoa('user' + ":" + 'user'));
}
© www.soinside.com 2019 - 2024. All rights reserved.