我有一个usb指纹扫描仪,可以通过以下端口和ip使用REST访问:http://127.0.0.1:30666/foh/UCBioAPI/devices它在Postman中正常工作,如下面的截图所示:
但是我无法使用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');
}
});
问题是我无法改变设备的工作方式。我唯一可以修改的是我的javascript代码。我的服务器在IIS 10中工作,并且基本上是相同的域 - localhost。提前致谢。
Postman没有使用CORS沙箱并完全跳过它。浏览器以不同的方式运行。它在执行实际请求之前发送用于CORS身份验证的数据。 OPTIONS请求就是那个。它包含原始,主机和实际请求类型,因此服务器可以决定是否应该接受它。
如果您无法更改设备上的代码,那么您将无法运行,它将无法运行。
以防万一,有一篇关于CORS的好文章:https://www.html5rocks.com/en/tutorials/cors/
尝试使用beforeSend
函数而不是headers
。
beforeSend: function (xhr) {
xhr.setRequestHeader ("Authorization", "Basic " + btoa('user' + ":" + 'user'));
}