所有请求均被CORS开发政策阻止

时间:2018-12-10 22:54:02

标签: ruby-on-rails node.js reactjs ruby-on-rails-4 cors

我有一个带有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原因。

有什么办法可以解决?可能是某些软件包在我的系统上以某种方式更新了,并且与项目有所不同,所以现在坏了吗?

要发出请求的网址:

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);
}

1 个答案:

答案 0 :(得分:2)

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

有关withCredentials的更多信息:

  

XMLHttpRequest.withCredentials属性是一个布尔值,指示是否应使用cookie,授权标头或TLS客户端证书之类的凭据发出跨站点访问控制请求。设置withCredentials不会影响同一站点的请求。

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