SpringBoot下如何配置實現跨域請求?

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("/**\


分享到:


相關文章: