首页 > 解决方案 > 如果 CORS 拒绝我的 API 请求并且我不控制服务器,我无能为力吗?

问题描述

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

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

我正在尝试从我无法控制的服务器访问信息,并且收到下面的 CORS 错误。我正在使用所有者提供的 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 属性控制。

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

标签: javascriptapivue.jscorsxmlhttprequest

解决方案


您可以随时使用 CORS 代理,例如cors-anywhere,甚至可以自己制作.


推荐阅读