如果CORS如果拒绝我的API请求并且我无法控制服务器,那么我无能为力吗?

时间:2019-12-04 11:41:34

标签: javascript api vue.js cors xmlhttprequest

据我所知,在服务器上托管内容的人可以设置CORS标头,以指定谁可以访问此内容以及他们可以做什么。所有者还可以通过仅允许通过使用Access-Control-Allow-Origin标头允许特定站点来阻止某些站点访问这些项目。

这是否正确,还是我误解了CORS的工作原理?

我正在尝试从不受控制的服务器访问信息,并且收到以下CORS错误。我 am 使用了所有者提供的API,但是我正在从本地主机开发服务器发出请求,想知道这是否可能引起问题吗?我正在使用Quasar和Vue进行开发,对于总体开发来说我是非常新的-请原谅任何明显的错误/疏忽。

这是我的代码:

var data = null;
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener('readystatechange', function () {
    if (this.readyState === this.DONE) {
        console.log(this.responseText);
    }
});

xhr.open('GET', 'url');
xhr.setRequestHeader('X-Correlation-Id', 'id');
xhr.setRequestHeader('content-type', 'something+json; UTF-8');
xhr.setRequestHeader('authorization', 'Basic username:password');

xhr.send(data);

我收到这个:

  

从原点“ http://localhost:8080”对“ URL”处的XMLHttpRequest的访问已被CORS策略阻止:对预检请求的响应未通过访问控制检查:“ Access-Control-Allow-Origin”的值当请求的凭据模式为“包括”时,响应中的“标头不得为通配符” *”。 XMLHttpRequest发起的请求的凭据模式由withCredentials属性控制。

我几乎不知道这意味着什么,并且我已经做了很多阅读以试图理解它。如果有明显的修复,请进一步进行解释,谢谢!

1 个答案:

答案 0 :(得分:0)

您始终可以使用cors-anywhere之类的CORS代理,甚至可以使用make your own