欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

springboot+vue項(xiàng)目怎么解決跨域問題詳解

 更新時(shí)間:2025年05月13日 08:54:55   作者:云之兕  
這篇文章主要介紹了springboot+vue項(xiàng)目怎么解決跨域問題的相關(guān)資料,包括前端代理、后端全局配置CORS、注解配置和Nginx反向代理,并總結(jié)了每種方法的適用場景、優(yōu)點(diǎn)和缺點(diǎn),文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下

1. 前端代理(開發(fā)環(huán)境推薦)

適用場景:Vue 開發(fā)環(huán)境調(diào)試時(shí),避免直接請求后端接口的跨域問題。

實(shí)現(xiàn)步驟

  • 在 Vue 項(xiàng)目的 vue.config.js 中配置代理:

    module.exports = {
      devServer: {
        proxy: {
          '/api': {  // 代理所有以 /api 開頭的請求
            target: 'http://localhost:8080', // Spring Boot 后端地址
            changeOrigin: true, // 允許跨域
            pathRewrite: {
              '^/api': '' // 去除請求路徑中的 /api 前綴
            }
          }
        }
      }
    }

    2.前端請求時(shí)使用 /api 前綴:

    axios.get('/api/users').then(response => {
      // 處理響應(yīng)
    });

    優(yōu)點(diǎn):無需修改后端代碼,適合開發(fā)階段快速解決跨域。

2. 后端全局配置 CORS(生產(chǎn)環(huán)境推薦)

適用場景:生產(chǎn)環(huán)境需要后端直接支持跨域。
實(shí)現(xiàn)步驟

  • 在 Spring Boot 中創(chuàng)建全局 CORS 配置類:

    @Configuration
    public class CorsConfig implements WebMvcConfigurer {
    
        @Override
        public void addCorsMappings(CorsRegistry registry) {
            registry.addMapping("/**") // 所有接口
                    .allowedOrigins("http://localhost:5173") // 允許的前端地址
                    .allowedMethods("GET", "POST", "PUT", "DELETE") // 允許的請求方法
                    .allowedHeaders("*") // 允許的請求頭
                    .allowCredentials(true) // 允許發(fā)送 Cookie
                    .maxAge(3600); // 預(yù)檢請求緩存時(shí)間(秒)
        }
    }

    2.若使用 Spring Security,需額外放行 OPTIONS 請求(預(yù)檢請求):

    @Configuration
    @EnableWebSecurity
    public class SecurityConfig {
    
        @Bean
        public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
            http.cors() // 啟用 CORS
                .and()
                // 其他安全配置...
                .authorizeRequests()
                .requestMatchers(HttpMethod.OPTIONS).permitAll() // 放行 OPTIONS 請求
                .anyRequest().authenticated();
            return http.build();
        }
    }

3. 后端注解配置(按接口控制)

適用場景:僅特定接口需要跨域支持。

實(shí)現(xiàn)步驟:在 Controller 或方法上添加 @CrossOrigin 注解:

@RestController
@CrossOrigin(origins = "http://localhost:5173") // 類級別注解
public class UserController {

    @GetMapping("/users")
    @CrossOrigin(origins = "http://localhost:5173") // 方法級別注解
    public List<User> getUsers() {
        // 業(yè)務(wù)邏輯
    }
}

4. Nginx 反向代理(生產(chǎn)環(huán)境終極方案)

適用場景:前后端部署到同一域名下,徹底避免跨域。

實(shí)現(xiàn)步驟

  • 配置 Nginx,將前端請求代理到后端接口:

    server {
        listen 80;
        server_name your-domain.com;
    
        # 前端靜態(tài)資源
        location / {
            root /path/to/vue/dist;
            index index.html;
            try_files $uri $uri/ /index.html;
        }
    
        # 后端 API 代理
        location /api {
            proxy_pass http://localhost:8080;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
    }

    2.重啟 Nginx:

    sudo nginx -s reload

總結(jié)

方案適用場景優(yōu)點(diǎn)缺點(diǎn)
前端代理開發(fā)環(huán)境無需后端改動(dòng),快速解決跨域僅適用于開發(fā)環(huán)境
后端全局 CORS生產(chǎn)環(huán)境統(tǒng)一管理,安全性可控需后端配置
注解配置特定接口跨域靈活控制單個(gè)接口配置冗余,維護(hù)成本高
Nginx 反向代理生產(chǎn)環(huán)境部署徹底解決跨域,提升性能需運(yùn)維支持

推薦組合

  • 開發(fā)環(huán)境:前端代理(方案1) + 后端全局 CORS(方案2)。

  • 生產(chǎn)環(huán)境:Nginx 反向代理(方案4) + 后端全局 CORS(方案2,雙重保障)。

到此這篇關(guān)于springboot+vue項(xiàng)目怎么解決跨域問題的文章就介紹到這了,更多相關(guān)springboot+vue解決跨域問題內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • ReentrantReadWriteLock不能鎖升級的原因總結(jié)

    ReentrantReadWriteLock不能鎖升級的原因總結(jié)

    今天給大家?guī)淼氖顷P(guān)于Java并發(fā)的相關(guān)知識,文章圍繞著為什么ReentrantReadWriteLock不能鎖升級展開,文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06
  • java 從服務(wù)器下載文件并保存到本地的示例

    java 從服務(wù)器下載文件并保存到本地的示例

    本篇文章主要介紹了java 從服務(wù)器下載文件并保存到本地的示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-02-02
  • java&javascript自定義加密數(shù)據(jù)傳輸代碼示例

    java&javascript自定義加密數(shù)據(jù)傳輸代碼示例

    這篇文章主要介紹了java&javascript自定義加密數(shù)據(jù)傳輸代碼示例,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-11-11
  • 一文了解Seata的實(shí)現(xiàn)原理

    一文了解Seata的實(shí)現(xiàn)原理

    隨著業(yè)務(wù)發(fā)展,單體系統(tǒng)逐漸無法滿足業(yè)務(wù)的需求,分布式架構(gòu)逐漸成為大型互聯(lián)網(wǎng)平臺首選。伴隨而來的問題是,本地事務(wù)方案已經(jīng)無法滿足,分布式事務(wù)相關(guān)規(guī)范和框架應(yīng)運(yùn)而生。本文主要介紹Seata的實(shí)現(xiàn)原理
    2021-06-06
  • MySQL查詢字段實(shí)現(xiàn)字符串分割split功能的示例代碼

    MySQL查詢字段實(shí)現(xiàn)字符串分割split功能的示例代碼

    本文主要介紹了MySQL查詢字段實(shí)現(xiàn)字符串分割split功能的示例代碼,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • 詳談Servlet和Filter的區(qū)別以及兩者在Struts2和Springmvc中的應(yīng)用

    詳談Servlet和Filter的區(qū)別以及兩者在Struts2和Springmvc中的應(yīng)用

    下面小編就為大家?guī)硪黄斦凷ervlet和Filter的區(qū)別以及兩者在Struts2和Springmvc中的應(yīng)用。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-08-08
  • Java?IO網(wǎng)絡(luò)模型實(shí)現(xiàn)解析

    Java?IO網(wǎng)絡(luò)模型實(shí)現(xiàn)解析

    這篇文章主要為大家介紹了Java?IO網(wǎng)絡(luò)模型實(shí)現(xiàn)解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • Java手寫圖書管理基本功能附代碼

    Java手寫圖書管理基本功能附代碼

    隨著網(wǎng)絡(luò)技術(shù)的高速發(fā)展,計(jì)算機(jī)應(yīng)用的普及,利用計(jì)算機(jī)對圖書館的日常工作進(jìn)行管理勢在必行,本篇文章手把手帶你用Java實(shí)現(xiàn)一個(gè)圖書管理系統(tǒng),大家可以在過程中查缺補(bǔ)漏,提升水平
    2022-04-04
  • GC算法實(shí)現(xiàn)篇之并發(fā)標(biāo)記清除

    GC算法實(shí)現(xiàn)篇之并發(fā)標(biāo)記清除

    這篇文章主要為大家介紹了GC算法實(shí)現(xiàn)篇之并發(fā)-標(biāo)記-清除,?CMS垃圾收集器在減少停頓時(shí)間上做了很多給力的工作,?大量的并發(fā)線程執(zhí)行的工作并不需要暫停應(yīng)用線程
    2022-01-01
  • java貪吃蛇游戲?qū)崿F(xiàn)代碼

    java貪吃蛇游戲?qū)崿F(xiàn)代碼

    這篇文章主要為大家詳細(xì)介紹了java貪吃蛇游戲?qū)崿F(xiàn)代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-10-10

最新評論