Header Access-Control-Allow-Headers 不允许的字段 - Node/Express/KeystoneJs
Header field not allowed by Access-Control-Allow-Headers - Node/Express/KeystoneJs
我有 CORS 问题并且花了很多时间试图解决它,所以我决定在这里问一个问题。我的 angular 5 应用所在域的子域上有 keystone 应用。在本地主机上一切正常,但是当我将文件放到服务器上并尝试打开我的 angular 应用程序时,我收到此错误:
Failed to load http://xxxxxxxx.com/label: Request header
field params is not allowed by Access-Control-Allow-Headers in
preflight response.
我已将此行添加到我的 keystone.js 文件中:
keystone.set('cors allow origin', true);
keystone.set('cors allow methods', true);
keystone.set('cors allow headers', true);
routes/index.js 中的这一行:
app.all('/*', keystone.middleware.cors);
我尝试将其添加到 routes/index.js:
app.options('/*', function(req, res) {
res.header("Access-Control-Allow-Credentials", "true");
res.header('Access-Control-Allow-Methods', 'GET,POST');
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
res.sendStatus(200);
});
但我仍然得到同样的错误。有什么解决方法的建议吗?
安装此包https://www.npmjs.com/package/cors并管理您的 CORS 域。
基本用法
var express = require('express')
var cors = require('cors')
var app = express()
app.use(cors())
好吧,错误消息说明了一切(诚然不是很清楚)- 请求 header 预检响应中 Access-Control-Allow-Headers 不允许字段参数。 - 这意味着有一个名为 params
的请求 header 未包含在 Access-Control-Allow-Headers (ACAH) 响应 header.
中
将 ACAH 更改为:
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, params");
你应该没问题。
并不是说添加单独的包不会也解决问题,但是您不需要添加新包让它工作。
我也在使用 Keystone.js 并且我正在通过在文件末尾添加以下行来编辑 /routes/middleware.js:
/*
* CORS
*/
exports.setCors = function (req,res,next) {
res.header('Access-Control-Allow-Origin', '*.*');
res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE');
res.header('Access-Control-Allow-Headers', 'Content-Type');
}
我有 CORS 问题并且花了很多时间试图解决它,所以我决定在这里问一个问题。我的 angular 5 应用所在域的子域上有 keystone 应用。在本地主机上一切正常,但是当我将文件放到服务器上并尝试打开我的 angular 应用程序时,我收到此错误:
Failed to load http://xxxxxxxx.com/label: Request header field params is not allowed by Access-Control-Allow-Headers in preflight response.
我已将此行添加到我的 keystone.js 文件中:
keystone.set('cors allow origin', true);
keystone.set('cors allow methods', true);
keystone.set('cors allow headers', true);
routes/index.js 中的这一行:
app.all('/*', keystone.middleware.cors);
我尝试将其添加到 routes/index.js:
app.options('/*', function(req, res) {
res.header("Access-Control-Allow-Credentials", "true");
res.header('Access-Control-Allow-Methods', 'GET,POST');
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
res.sendStatus(200);
});
但我仍然得到同样的错误。有什么解决方法的建议吗?
安装此包https://www.npmjs.com/package/cors并管理您的 CORS 域。
基本用法
var express = require('express')
var cors = require('cors')
var app = express()
app.use(cors())
好吧,错误消息说明了一切(诚然不是很清楚)- 请求 header 预检响应中 Access-Control-Allow-Headers 不允许字段参数。 - 这意味着有一个名为 params
的请求 header 未包含在 Access-Control-Allow-Headers (ACAH) 响应 header.
将 ACAH 更改为:
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, params");
你应该没问题。
并不是说添加单独的包不会也解决问题,但是您不需要添加新包让它工作。
我也在使用 Keystone.js 并且我正在通过在文件末尾添加以下行来编辑 /routes/middleware.js:
/*
* CORS
*/
exports.setCors = function (req,res,next) {
res.header('Access-Control-Allow-Origin', '*.*');
res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE');
res.header('Access-Control-Allow-Headers', 'Content-Type');
}