Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/406.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 多重访问控制允许设置原始标头_Javascript_Node.js_Express_Cors - Fatal编程技术网

Javascript 多重访问控制允许设置原始标头

Javascript 多重访问控制允许设置原始标头,javascript,node.js,express,cors,Javascript,Node.js,Express,Cors,在我的Node/Express应用程序中,我专门删除任何现有的Allow Origin标头,并将其设置为特定域。它在本地工作,但在服务器上,它一直说响应头包含多个值。这是我在整个代码库中设置这些头的唯一位置。你有没有想过还有什么地方会这样 “Access Control Allow Origin”标题包含多个值“https://*.mycompany,*”,但只允许一个值 app.use(function(req, res, next){ res.removeHeader('Access

在我的Node/Express应用程序中,我专门删除任何现有的Allow Origin标头,并将其设置为特定域。它在本地工作,但在服务器上,它一直说响应头包含多个值。这是我在整个代码库中设置这些头的唯一位置。你有没有想过还有什么地方会这样

“Access Control Allow Origin”标题包含多个值“https://*.mycompany,*”,但只允许一个值

app.use(function(req, res, next){
    res.removeHeader('Access-Control-Allow-Origin');
    res.header('Access-Control-Allow-Origin', 'https://*.mycompany.com'); 
    res.header('Access-Control-Allow-Headers', '*');
    res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,PATCH,OPTIONS');
    res.header('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept, Authorization');
    if(req.method==='OPTIONS'){
        res.sendStatus(200);
    }
    next()
});

看看这是否可以为您解释:。问题是浏览器只接受Access Control Allow Origin标头中的一个域,并且您有一个通配符。解决方案是读取源标题并在响应上回显访问控制允许源标题(如果它是您要允许的源)。

什么是“现有允许源标题”?你的服务器还有什么其他部分在添加它?我指的是app.use函数的第一行,我删除了“Access--Control Allow Origin”标题,我可以看到,但是你认为它是从哪里开始的?你的服务器前面可能有一个反向代理,为了方便起见,他们只是在所有东西上设置cors头感谢这个想法-问题在于部署到服务器上的nginx配置中有一行:add_header“Access Control Allow Origin”*“always;”。。。虽然我很惊讶我们的removeHeader()语句没有删除它。这看起来是一个很好的观点,但是如果我为localhost:4200设置它,我会遇到同样的问题:“Access Control Allow Origin”头包含多个值“,*”,但只允许一个值。它最终成为我们的nginx配置中的一个设置(请参阅对我问题的评论)。但是你的答案是正确的。