Javascript 访问控制允许标头不允许的标头字段-Node/Express/KeystoneJs

Javascript 访问控制允许标头不允许的标头字段-Node/Express/KeystoneJs,javascript,node.js,express,cors,keystonejs,Javascript,Node.js,Express,Cors,Keystonejs,我有CORS问题,花了很多时间试图解决它,所以我决定在这里问一个问题。我的keystone应用程序位于我的angular 5应用程序所在域的子域上。在localhost上,一切正常,但当我将文件放入服务器并尝试打开angular应用程序时,出现以下错误: 未能加载:请求标头 中的访问控制允许标头不允许字段参数 飞行前反应 我已将以下行添加到我的keystone.js文件中: keystone.set('cors allow origin', true); keystone.set('cors a

我有CORS问题,花了很多时间试图解决它,所以我决定在这里问一个问题。我的keystone应用程序位于我的angular 5应用程序所在域的子域上。在localhost上,一切正常,但当我将文件放入服务器并尝试打开angular应用程序时,出现以下错误:

未能加载:请求标头 中的访问控制允许标头不允许字段参数 飞行前反应

我已将以下行添加到我的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);
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);
    });
我尝试将此添加到routes/index.js:

app.all('/*', keystone.middleware.cors);
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);
    });
但我还是犯了同样的错误。有什么建议吗?

安装此软件包并管理您的CORS域

基本用法

var express = require('express')
var cors = require('cors')
var app = express()

app.use(cors())

错误消息说明了一切(当然不是很清楚)飞行前响应中的访问控制允许标头不允许请求标头字段params。-这意味着有一个名为
params
的请求标头,它不包括在访问控制允许标头(ACAH)响应标头中

将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');
}

所有的东西都来自同一个地方?你能告诉我你遇到的错误吗,这会有助于进一步识别问题。不,不是所有的东西都来自同一个来源。我有api(keystonejs)在子域到域之间,其中是我的angular应用程序。我在我的问题中添加了错误。不可能重复,这不是你发布的线程的重复,因为我的问题是关于keystonejs cors模块中的烘焙,它不工作。是的,工作正常!我不明白为什么keystone支持的cors模块不能工作。谢谢你的回答!;)