栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

CORS跨域问题

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

CORS跨域问题

问题描述: 在测试环境下,通过app访问后端接口,出现了CORS的问题(跨域问题)

然后通过检查浏览器的请求信息(Windows系统在浏览器中按F12即可打开,或者用右键点击[检查]也可以打开),发现两个比较关键的信息:

1、Fetch/XHR(旧版浏览器好像叫做XHR)中,Response.Headers 里面有关键信息

......

Access-Control-Allow-Origin:*

Access-Control-Allow-Origin:http://xxx:88

......

 (ps:图片是已经解决好了的情况下,我截的图,有问题的时候,下面还有一个重复配置)

2、Console中,有明显的错误提示信息:(敏感信息用xxx代替)

Access to XMLHttpRequest at 'http://xxx:8880/xxx/xxx?xxx=1' from origin 'http://xxx:88' has been blocked by CORS policy: The 'Access-Control-Allow-Origin' header contains multiple values '*, http://xxx:88', but only one is allowed.

原因分析:

通过上述的两个关键点,可以很明显知道,出现跨域问题的原因,就是存在了两个Access-Control-Allow-Origin配置导致的。而Access-Control-Allow-Origin这个配置参数,就是跨域问题解决的方案。(这个参数的具体解释,有比较多的文章,我在这里就不作赘述了)

原因排查:

知道了本次问题的原因,就要分析,到底是哪里设置了这个参数,导致了重复设置了。

然后发现在gateway中,有这样一段代码:

很明显这里有配置,且设置的是*(表示允许所有请求进行跨域操作),

再然后,经过确认,发现了 有一个SecurityConfig(重写Spring的WebSecurityConfigurerAdapter)中,有重写配置,并设置了cors的配置

 然后把这里做了调整,即可解决此次问题

问题总结:

1、出现跨域的问题原因:要具体分析,针对这次就是重复配置导致的;

2、跨域问题的通常解决,是调整cors的配置,或者在nginx、或者在后端代码配置(大部分都是在后端)Access-Control-Allow-Origin的参数设置;

3、对于http请求相关知识,还是需要去补强的,这样再面对这种类似的问题,才会比较快速的定位问题和解决问题。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/603553.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号