Javascript 如何将访问控制允许原点设置为*&引用;使用XMLHttpRequest对象?

Javascript 如何将访问控制允许原点设置为*&引用;使用XMLHttpRequest对象?,javascript,heroku,http-headers,xmlhttprequest,cors,Javascript,Heroku,Http Headers,Xmlhttprequest,Cors,我正在尝试向部署在Heroku中的api发送请求。我使用XMLHttpRequest对象向api发出请求。我正在尝试一个简单的方法 不要耍花招。但是,我收到以下错误: 无法加载XMLHttpRequest。请求的资源上不存在“Access Control Allow Origin”标头。因此,不允许访问源“” 这对于铬来说是正常的。然而,我想用邮递员处理的方式来做这件事。我应该如何向api发出请求,以便它允许一切 我使用了这个Chrome扩展,它工作了 我所能理解的是,它基本上是在设定这个规则

我正在尝试向部署在Heroku中的api发送请求。我使用XMLHttpRequest对象向api发出请求。我正在尝试一个简单的方法 不要耍花招。但是,我收到以下错误:

无法加载XMLHttpRequest。请求的资源上不存在“Access Control Allow Origin”标头。因此,不允许访问源“”

这对于铬来说是正常的。然而,我想用邮递员处理的方式来做这件事。我应该如何向api发出请求,以便它允许一切

我使用了这个Chrome扩展,它工作了

我所能理解的是,它基本上是在设定这个规则:

    rule = {
        "name": "Access-Control-Allow-Origin",
        "value": "*"
    };
但是,当我尝试使用xhr.setRequestHeader()方法设置它时,它不起作用

<script>
    var xhr = new XMLHttpRequest();
    xhr.open('GET', 'https://xxx-xxxx-xx.herokuapp.com/api/foods/', true);
    xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    xhr.onload = function(){
      console.log(xhr)
    }
    xhr.send(null);
</script>

var xhr=new XMLHttpRequest();
xhr.open('GET','https://xxx-xxxx-xx.herokuapp.com/api/foods/",对),;
setRequestHeader(“内容类型”,“应用程序/x-www-form-urlencoded”);
xhr.onload=函数(){
console.log(xhr)
}
xhr.send(空);

需要设置头的是Heroku中的API,而不是调用它的web客户端

您的浏览器不允许您的页面请求另一个域中的资源,从而遵循了。您的服务器可以使用让浏览器知道可以从另一个域向该特定资源发出请求,但此信息需要来自您的服务器

分机和邮递员不像浏览器那样遵循相同的来源策略。为了您的安全,浏览器需要遵循此策略


如何设置这些头实际上取决于如何在Heroku中实现端点。

需要设置头的是Heroku中的API,而不是调用它的web客户端

您的浏览器不允许您的页面请求另一个域中的资源,从而遵循了。您的服务器可以使用让浏览器知道可以从另一个域向该特定资源发出请求,但此信息需要来自您的服务器

分机和邮递员不像浏览器那样遵循相同的来源策略。为了您的安全,浏览器需要遵循此策略


如何设置这些头实际上取决于您在Heroku中实现端点的方式。

这只能在扩展级别全局完成,或者使用服务器作为代理。解决此问题的方法是让您的服务器应用程序使用正确的allow标头进行响应。因此,服务器必须将Access Control allow Origin设置为*?没有办法用XMLHttpRequest或任何其他方式修改它?没有基本的JavaScript,这会使整个概念毫无意义。正确响应将消除此问题,如果您只是发送GET,则JSONP可能是一个选项,请参阅。请求方法可能会有所不同。我需要为所有REST方法实现这一点。但是,是否可以安全地假设我可以指定需要允许标头访问控制allow Origin的域的列表?这只能在扩展级别全局完成,或者使用服务器作为代理。解决此问题的方法是让您的服务器应用程序使用正确的allow标头进行响应。因此,服务器必须将Access Control allow Origin设置为*?没有办法用XMLHttpRequest或任何其他方式修改它?没有基本的JavaScript,这会使整个概念毫无意义。正确响应将消除此问题,如果您只是发送GET,则JSONP可能是一个选项,请参阅。请求方法可能会有所不同。我需要为所有REST方法实现这一点。但是,是否可以安全地假设我可以指定需要允许标头访问控制allow Origin的域列表?