我有一个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。提前谢谢。
答案 0 :(得分:3)
Postman没有使用CORS沙箱并完全跳过它。浏览器以不同的方式运行。它在执行实际请求之前发送用于CORS身份验证的数据。 OPTIONS请求就是那个。它包含原始,主机和实际请求类型,因此服务器可以决定是否应该接受它。
如果您无法更改设备上的代码,那么您将失去运气,但它无法正常工作。
以防万一,有一篇关于CORS的好文章: https://www.html5rocks.com/en/tutorials/cors/
答案 1 :(得分:-1)
尝试使用beforeSend
功能代替headers
。
beforeSend: function (xhr) {
xhr.setRequestHeader ("Authorization", "Basic " + btoa('user' + ":" + 'user'));
}