![](/img/trans.png)
[英]5xx or 4xx error with “No 'Access-Control-Allow-Origin' header is present”
[英]Access-Control-Allow-Origin' header contains multiple values 'http://xx.xx.xx.xx:3002, http://xx.xx.xx.xx:3002', but only one is allowed
我已经下载了Windows可执行文件并安装了它。 该服务将在localhost:11100端口上侦听。
我编写了一个javascript代码以连接到端口,并在任何Web服务器上运行此javascript代码失败,因为服务器在响应中发送了多个Access-Control-Allow-Origin
标头。
但是,如果我在本地HTML页面中编写我的JavaScript代码并在浏览器中将其打开,则它将在响应中发送一个“ Access-Control-Allow-Origin”。
以下是Javascript
代码:
function RDService(){
var url = "http://127.0.0.1:11100";
var xhr;
var ua = window.navigator.userAgent;
var msie = ua.indexOf("MSIE ");
if (msie > 0 || !!navigator.userAgent.match(/Trident.*rv\:11\./)) // If Internet Explorer, return version number{
//IE browser
xhr = new ActiveXObject("Microsoft.XMLHTTP");
} else {
//other browser
xhr = new XMLHttpRequest();
}
xhr.open('RDSERVICE', url, true);
xhr.onreadystatechange = function () {
if (xhr.readyState == 4){
var status = xhr.status;
if (status == 200) {
alert(xhr.responseText);
//Capture(); //Call Capture() here if FingerPrint Capture is required inside RDService() call
console.log(xhr.response);
} else {
console.log(xhr.response);
}
}
};
xhr.send();
}
调用下面的RDService函数后,服务抛出错误:
无法加载http://127.0.0.1:11100/ :对预检请求的响应未通过访问控制检查:'Access-Control-Allow-Origin'标头包含多个值' http://xx.xx.xx .xx:3002 , http://xx.xx.xx.xx:3002 ',但只允许一个。 因此,不允许访问来源' http://xx.xx.xx.xx:3002 '。
Windows可执行文件只能在Access-Control-Allow-Origin
标头中返回一个域或*
。 这不是客户端JavaScript的问题。
Access-Control-Allow-Origin: *
Access-Control-Allow-Origin: <origin>
*
对于没有凭据的请求,服务器可以将“ *”指定为通配符,从而允许任何源访问资源。 <origin>
指定可以访问资源的URI。
参考: https : //developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Origin
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.