CORS 开发政策阻止的所有请求

Posted

技术标签:

【中文标题】CORS 开发政策阻止的所有请求【英文标题】:All requests blocked by CORS policy on development 【发布时间】:2019-05-11 21:34:45 【问题描述】:

我有一个带有 React 客户端的 Rails API。我已经在应用程序设置中设置了很长时间了,今天我在处理它时突然开始收到错误:

Access to XMLHttpRequest at 'http://localhost:3000/api/v1/user/authed'
from origin 'http://localhost:8000' has been blocked by CORS policy: 
The value of the 'Access-Control-Allow-Origin' header in the response 
must not be the wildcard '*' when the request's credentials mode is 
'include'. The credentials mode of requests initiated by the 
XMLHttpRequest is controlled by the withCredentials attribute.

现在我的应用程序中的所有请求都不起作用。

请求确实从 React 应用程序传递到 Rails API,Rails API 也正确响应(我可以在终端中看到这一点)但客户端实际上没有发生任何事情,因为我假设它被阻止了CORS 原因。

我可以做些什么来解决这个问题吗?难道是某些包在我的系统上以某种方式更新并且与项目不同,所以现在它坏了?

请求的 URL:

const ENDPOINT = '/api/v1',
      PORT = 3000,
      URL = window.location.protocol + '//' + window.location.hostname + ':' + PORT + ENDPOINT;

请求

$.ajax(
  url: URL + '/' + resource,
  type: verb,
  data: params,
  xhrFields:  withCredentials: true 
)
  .done(callback)
  .fail(errcallback);

请求函数的格式为:

static get(resource, params, callback, errcallback) 
  API.send('GET', resource, params, callback, errcallback);

【问题讨论】:

@emaillenin 我搬到了存储库中的 master 分支,这样我就可以重新开始了。删除了 Gemfile.lockpackage.json.lock 并运行 bundle installnpm install 以重新开始,但它仍然会出现。这就是为什么我对如何解决这个问题感到困惑。 你能发布你用来发出请求的代码吗? @wdm 我从我的api.js添加了相关代码 你试过删除xhrFields: withCredentials: true 吗?或者将Access-Control-Allow-Origin 设置为localhost:8000 它适用于删除xhrFields: withCredentials: true 。你知道为什么吗?另外,如果你在回答表格中写下解释,那么我会接受它 【参考方案1】:

如果您的 API 不需要凭据,您应该删除 withCredentials: true

更多关于withCredentials

XMLHttpRequest.withCredentials 属性是一个布尔值,指示是否应使用 cookie、授权标头或 TLS 客户端证书等凭据进行跨站点访问控制请求。设置 withCredentials 对同站点请求没有影响。

https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/withCredentials

【讨论】:

以上是关于CORS 开发政策阻止的所有请求的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的 formdata POST 没有被 Cors 政策阻止?

Google OAuth2:重定向已被 CORS 政策阻止:请求需要预检,不允许遵循跨域重定向

被 CORS 政策阻止 - React - MangoPay

为啥我收到 Cors 错误:...已被 CORS 政策阻止

对 Url 的发布请求给出了被 cors 策略阻止的错误 [重复]

被 CORS 政策阻止并没有解决! Laravel + Vuejs