CarKei
一般有三種方式,第一種最快最簡單的就是使用註解,第二種是使用Filter,第三種是是配置使用CorsFilter和CorsConfiguration方法。
註解
在controller層,增加註解@CrossOrigin,這種方式要求我們每一個controller都需要定義該註解
Filter
過濾器使用response,通過設置響應體完成跨域
import javax.servlet.*; import javax.servlet.http.HttpServletResponse; import java.io.IOException; @Component public class CorsFilter implements Filter { final static org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(CorsFilter.class); public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { HttpServletResponse response = (HttpServletResponse) res; response.setHeader("Access-Control-Allow-Origin\程序猿開發日記
一、什麼是跨域請求?
跨域請求,就是說瀏覽器在執行腳本文件的ajax請求時,腳本文件所在的服務地址和請求的服務地址不一樣。說白了就是ip、網絡協議、端口都一樣的時候,就是同一個域,否則就是跨域。這是由於Netscape提出一個著名的安全策略——同源策略造成的,這是瀏覽器對JavaScript施加的安全限制。是防止外網的腳本惡意攻擊服務器的一種措施。
二、SpringBoot工程如何解決跨域問題?
那麼如何在SpringBoot中處理跨域問題呢?方法有很多,這裡著重講一種——利用@Configuration配置跨域。
代碼實現如下:
/**
* 實現基本的跨域請求
*/
@Configuration
public class CorsConfig {
private CorsConfiguration buildConfig() {
CorsConfiguration corsConfiguration = new CorsConfiguration();
corsConfiguration.addAllowedOrigin("*"); // 允許任何域名使用
corsConfiguration.addAllowedHeader("*"); // 允許任何頭
corsConfiguration.addAllowedMethod("*"); // 允許任何方法(post、get等)
return corsConfiguration;
}
@Bean
public CorsFilter corsFilter() {
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
source.registerCorsConfiguration("/**\