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.lock
和 package.json.lock
并运行 bundle install
和 npm 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