Javascript 添加授权标头后使用OPTIONS方法代替GET
我有一个usb指纹扫描仪,可以在以下端口和ip上使用REST进行访问:它在Postman中正常工作,如下面的屏幕截图所示: 但是,我无法让它与jQueryAjax一起工作Javascript 添加授权标头后使用OPTIONS方法代替GET,javascript,jquery,http,Javascript,Jquery,Http,我有一个usb指纹扫描仪,可以在以下端口和ip上使用REST进行访问:它在Postman中正常工作,如下面的屏幕截图所示: 但是,我无法让它与jQueryAjax一起工作 var url2 = 'http://127.0.0.1:30666/foh/UCBioAPI/devices'; $.ajax({ type: "GET", url: url2, headers: {
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。提前感谢。在发送前尝试
功能,而不是标题
beforeSend: function (xhr) {
xhr.setRequestHeader ("Authorization", "Basic " + btoa('user' + ":" + 'user'));
}
尝试在发送前使用函数,而不是标题
beforeSend: function (xhr) {
xhr.setRequestHeader ("Authorization", "Basic " + btoa('user' + ":" + 'user'));
}
邮递员并没有用CORS沙盒,而是完全跳过了它。浏览器以不同的方式工作。在执行实际请求之前,它发送数据进行CORS身份验证。选项请求就是那个。它包含源、主机和实际请求类型,因此服务器可以决定是否接受它
如果你无法更改设备上的代码,那么你就倒霉了,它将无法工作
为了以防万一,有一篇关于CORS的好文章:
邮递员没有用COR沙盒,而是完全跳过它。浏览器以不同的方式工作。在执行实际请求之前,它发送数据进行CORS身份验证。选项请求就是那个。它包含源、主机和实际请求类型,因此服务器可以决定是否接受它
如果你无法更改设备上的代码,那么你就倒霉了,它将无法工作
为了以防万一,有一篇关于CORS的好文章:
您正在从localhost请求127.0.0.1,因为浏览器认为这是跨域的,所以它会首先发出选项请求,而您的服务器拒绝该请求。将您的服务器更改为允许跨域或使用localhost而不是IP地址尝试将其设置为“https”或将127.0.0.1更改为localhost。“问题是我无法更改设备的工作方式。”-然后您无法向其发出此类客户端跨域请求,这么简单。在您的jQuery
请求中尝试使用beforeSend
,如下:beforeSend:function(xhr){xhr.setRequestHeader(“Authorization”,“Basic”+btoa('user'+“:“+'user');}
您正在从本地主机请求127.0.0.1,因为浏览器认为这是跨域的,所以它首先发出一个选项请求,而您的服务器拒绝了该请求。将您的服务器更改为允许跨域或使用localhost而不是IP地址尝试将其设置为“https”或将127.0.0.1更改为localhost。“问题是我无法更改设备的工作方式。”-然后您无法向其发出此类客户端跨域请求,就这么简单。试着在你的jQuery
请求中使用beforeSend
,就像这样:beforeSend:function(xhr){xhr.setRequestHeader(“Authorization”,“Basic”+btoa('user'+“:“+'user'));}
它只是“headers:{}”的另一种语法,确切地说,它只是“headers:{}”的另一种语法,CORS在邮递员上下文中没有意义,因为请求没有来源(完成请求的url)。这就像当你直接在浏览器中写一个url,与页面中的请求相反(html链接、表单post、javascript调用),准确地说,CORS在邮递员上下文中没有意义,因为请求没有来源(完成请求的url)。这就像您直接在浏览器中编写url一样,与页面中的请求相反(html链接、表单帖子、javascript调用)