【问题解决】'Access-Control-Allow-Origin' header contains multiple values '*, *', but only one is allowed.
问题复述
今天项目组有人找我说之前部署的程序在测试环境没问题,到生产环境出现了奇怪的问题,点按钮没反应。
我通过腾讯会议发现他们的浏览器控制台上打出了如下错误:
Access to XMLHttpRequest at 'https://aaa.bbb.ccc' from origin 'https://ddd.bbb.ccc' has been blocked by CORS policy: The 'Access-Control-Allow-Origin' header contains multiple values '*, *', but only one is allowed.
很奇怪,CORS 相关的一般是跨域问题啊,怎么会这样呢?我注意到一点异常如下图,竟然设置了2次重复的跨域响应头!
问题解决
在根据错误查到原因就是 Access-Control-Allow-Origin
响应头重复设置导致跨域设置失败,去掉其中一个就可以了。
找到那个项目的主程,问他是不是在代码中添加了解决跨域的响应头,回复是肯定的。他的代码如下:
现在正在上线,改代码肯定不现实了,改下Nginx的配置吧,如下注释掉两行配置并reload,问题得以解决。
本次就分享这些,我是Hellxz,我们下次再见。