在 SpringBoot 中設定允許跨域請求
阿新 • • 發佈:2019-01-07
一、前言
現在在團隊做的專案都是前後端分離的,藉助 swagger 進行前後端合作
① 後臺負責寫資料處理的介面
② 前臺負責解析 JSON、設計介面
要實現介面可以給前端訪問,還要設定允許跨域訪問介面,正式本文的重點
前後端分離優缺點:
一、為什麼要前後端分離:
1.後臺介面可以 pc、app、pad 多端適應
2.前端 SPA 開發模式開始流行
3.前後端開發職責不清(如JSP/thymeleaf/freemarker/Django
模板引擎渲染資料,到底是誰的工作?)
4.前後端互相等待,不能同時進行開發
5.前端一直配合著後端,能力受限
6.後臺開發語言和模板高度耦合
二、前後端分離缺點
1.前後端學習門檻增加
2.資料依賴導致文件重要性增加
3.前端工作量加大
4.SEO 的難度加大(ajax大量使用)
由於瀏覽器的安全性限制,不允許AJAX訪問 協議不同、域名不同、埠號不同的 資料介面,
瀏覽器認為這種訪問不安全
二、程式碼
package com.zcw.conf;
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;
/**
* 實現基本的跨域請求
* @author linhongcun
*
*/
@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("/**", buildConfig()); // 對介面配置跨域設定
return new CorsFilter(source);
}
}
三、其他
以上的程式碼基本是常識了,記錄一下,
Ajax 請求示例:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<script src="js/jquery-1.7.2.js"></script>
<script type="text/javascript">
function upd() {
$.ajax({
type: "get",
data: "a=1",
url: "http://120.79.197.131:8080/user/getAllUser",
success: function(result) {
console.log(result);
}
});
}
</script>
<body>
<!--獲取-->
<button id="btn2" onclick="upd()">Get request 獲取</button>
</body>
</html>