如何使用凭证修复CORS错误:包含?

时间:2019-07-25 16:39:16

标签: javascript reactjs cors fetch create-react-app

关于CORS的另一个问题,我浏览了很多信息,但无能为力。因此,我将非常感谢您的帮助。

我正在发送启用了凭据的获取请求。浏览器在“访问控制权限”凭据上经常发誓的内容。我尝试配置代理,但它也无法使用。因此,我需要在服务器上的响应设置中添加Access-Control-Allow-Credentials。但是我不知道如何。
我正在使用create-react-app。甚至没有包含熟悉的服务器代码的文件

错误:

 The value of the 'Access-Control-Allow-Credentials' header in the response is ''
 which must be 'true' when the request's credentials mode is 'include'

响应头:

access-control-allow-origin: http://localhost:3000

请求标头:

WARNING Provisional headers are shown
Access-Control-Request-Headers: access-control-allow-credentials,access-control-allow-origin
Access-Control-Request-Method: GET
Origin: http://localhost:3000
Referer: http://localhost:3000/

3 个答案:

答案 0 :(得分:2)

嗨,请在您的server.js或node中的app.js中使用以下代码。

var express = require('express');
var cors = require('cors');
var app = express();
app.use(cors());
app.all('*', function (req, res) {
   res.header("Access-Control-Allow-Origin", "*");
 res.header("Access-Control-Allow-Headers", "Content-Type,Content-Length, Authorization, Accept,X-Requested-With");
 res.header("Access-Control-Allow-Methods", "PUT,POST,GET,DELETE,OPTIONS");```

答案 1 :(得分:1)

如果您的后端使用Express,请尝试在下面添加这段代码:

app.use(function(req, res, next) {
    res.header('Access-Control-Allow-Origin', '*');
    res.header('Access-Control-Allow-Credentials', true);
    res.header(
        'Access-Control-Allow-Headers',
        'Origin, X-Requested-With, Content-Type, Accept'
    );
    next();
});

另一种解决方案,您可以使用cors模块,基本上就可以安装它:

npm install cors --save

并将此代码添加到您的服务器中:

var express = require('express');
var cors = require('cors');
var app = express();
app.use(cors());

答案 2 :(得分:0)

由于您使用的是create-react-app,因此最简单的方法是使用代理,以便请求看起来像是来自同一域,并且完全避免了CORS。假设您的后端服务器将位于同一主机上,那么实际上这也更接近于生产。

Webpack有一个干净的方法可以做到这一点。参阅Facebook的博客:https://facebook.github.io/create-react-app/docs/proxying-api-requests-in-development

现在变得非常容易。您需要做的就是将一个proxy字段添加到package.json中。例如-

"proxy": "http://localhost:4000",