1. 程式人生 > >在 SpringBoot 中設定允許跨域請求

在 SpringBoot 中設定允許跨域請求

一、前言

現在在團隊做的專案都是前後端分離的,藉助 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>