繁体   English   中英

Access-Control-Allow-Origin'标头包含多个值'http://xx.xx.xx.xx:3002,http://xx.xx.xx.xx:3002',但只允许一个

[英]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:3002http://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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM