Sprint Boot解决跨越问题及谷歌浏览器关闭同源策略
在项目前后端分离的情况下,经常会遇到跨域问题,跨域他是由浏览器的同源策略造成的,是浏览器对JavaScript施加的安全措施。
如果你的后端是基于Java的Sprint Boot项目你可以使用下面的方法。需要注意的是Sprint Boot的版本不同,配置也会略有差异。
在Sprint Boot中配置跨域过滤器
Sprint boot2.6.7处理跨域配置如下。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| package com.yong.demo.signproduct.config;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.cors.CorsConfiguration; import org.springframework.web.cors.UrlBasedCorsConfigurationSource; import org.springframework.web.filter.CorsFilter;
import java.util.Collections;
@Configuration public class MyCorsConfiguration { @Bean public CorsFilter corsFilter() { CorsConfiguration corsConfiguration = new CorsConfiguration(); corsConfiguration.setAllowedOriginPatterns(Collections.singletonList("*")); corsConfiguration.addAllowedHeader(CorsConfiguration.ALL); corsConfiguration.addAllowedMethod(CorsConfiguration.ALL); corsConfiguration.setAllowCredentials(true);
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); source.registerCorsConfiguration("/**", corsConfiguration); return new CorsFilter(source); } }
|
在Sprint boot2.4.0以下使用如下配置来解决跨域问题。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| package com.yong.demo.signproduct.config;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.cors.CorsConfiguration; import org.springframework.web.cors.reactive.CorsWebFilter;
import org.springframework.web.cors.reactive.UrlBasedCorsConfigurationSource;
@Configuration public class MyCorsConfiguration { @Bean public CorsWebFilter corsWebFilter(){ UrlBasedCorsConfigurationSource source=new UrlBasedCorsConfigurationSource(); CorsConfiguration corsConfiguration = new CorsConfiguration(); corsConfiguration.addAllowedHeader("*"); corsConfiguration.addAllowedMethod("*"); corsConfiguration.addAllowedOrigin("*"); corsConfiguration.setAllowCredentials(true);
source.registerCorsConfiguration("/**",corsConfiguration); return new CorsWebFilter(source); } }
|
使用Chrome浏览器解决跨域问题。
在前端也可以使用谷歌浏览器临时关闭同源策略,我这里介绍如果关闭Mac谷歌浏览器的同源策略,来实现跨域请求。
1.创建文件夹 MyChromeDevUserData(文件夹名称可随意配置)
2.把下面代码在终端中运行 (tangyong 是我自己用户名,切记自己要改;–user-data-dir=‘第1步创建文件的本地路径’ )
1
| open -n /Applications/Google\ Chrome.app/ --args --disable-web-security --user-data-dir=/Users/tangyong/Documents/MyChromeDevUserData
|
3.输入之后,会弹出一个关闭了同源策略的Chrome窗口,他会提示一些安全性下降问题,不用管他,将你需要使用调试的页面在浏览器中打开,会发现不会提示跨域请求了。