如果 CORS 拒绝我的 API 请求并且我不控制服务器,我无能为力吗? [复制]
Posted
技术标签:
【中文标题】如果 CORS 拒绝我的 API 请求并且我不控制服务器,我无能为力吗? [复制]【英文标题】:If CORS if refusing my API request and I don't control the server, is there nothing I can do? [duplicate] 【发布时间】:2020-03-29 05:01:11 【问题描述】:据我了解,在其服务器上托管内容的人可以设置 CORS 标头,指定谁可以访问此内容以及他们可以使用它做什么。所有者还可以通过使用 Access-Control-Allow-Origin 标头仅允许特定站点来阻止某些站点访问这些项目。
这些是否正确,还是我误解了 CORS 的工作原理?
我正在尝试从我无法控制的服务器访问信息,并且收到以下 CORS 错误。我正在使用所有者提供的 API,但我正在从我的 localhost 开发服务器发出请求,我想知道这是否会导致问题?我正在使用 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 属性控制。
我几乎不知道这意味着什么,我已经阅读了大量内容试图理解它。如果有明显的修复,请进一步向我解释 - 谢谢!
【问题讨论】:
使用您自己的服务器来“代理”您的请求 - 但您尝试访问的服务器似乎想要允许 CORS,只是在您设置 withCredentials 时不正确 - 您确定吗你需要 withCredentials true 吗? 【参考方案1】:您始终可以使用 CORS 代理,例如 cors-anywhere,甚至可以使用 make your own。
【讨论】:
以上是关于如果 CORS 拒绝我的 API 请求并且我不控制服务器,我无能为力吗? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
getstream.io 获取 CORS 请求被拒绝:https://api.stream-io-api.com/api/v1.0/feed/user