我有一个带有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);
}
答案 0 :(得分:2)
如果您的API不需要凭据,则应删除withCredentials: true
。
有关withCredentials
的更多信息:
XMLHttpRequest.withCredentials属性是一个布尔值,指示是否应使用cookie,授权标头或TLS客户端证书之类的凭据发出跨站点访问控制请求。设置withCredentials不会影响同一站点的请求。
https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/withCredentials