关于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/
答案 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",