Spring Boot Security cors跨域解决
springboot security解决cors
添加配置文件
1 |
|
在WebSecurityConfig extends WebSecurityConfigurerAdapter
类里面添加
1 |
|
tomcat配置cors(废弃)
1 | /data/tomcat/bin/catalina.sh version |
添加
1 | <filter> |
err:
1 | Access to XMLHttpRequest at 'http://192.168.101.210:8005/fun/login.do?loginName=admin&pwd=a123456&yzm=2giu&userType=1' from origin 'http://127.0.0.1:32768' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. |
其中from origin
后面的地址设置到cors.allowed.origins
,多个地址,
分割
问题:这个经测试,发现option一直提示跨域
filter解决跨域
新建一个CorsFilter
类
1 | package com.xxx.controller.filter; |
然后在src\main\webapp\WEB-INF\web.xml
里配置,配成第一个过滤器
1 | <filter> |
这个和tomcat不能同时配置,会导致同时设置两个跨域地址
跨域测试
chrome console输入
1 | var xhr = new XMLHttpRequest(); |
在network查看结果
跨域分析
通过xhr请求的时候,response Header会返还Access-Control-Allow-Origin: *
,通过界面和postman不会返回Access-Control-Allow-Origin: *
,经分析测试,只有request Header中有该参数Origin:
,才会返回Access-Control-Allow-Origin: *
。源代码位置如下:
1 | public class DefaultCorsProcessor implements CorsProcessor { |