<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        vue+springboot實現項目的CORS跨域請求

        來源:懂視網 責編:小采 時間:2020-11-27 22:08:21
        文檔

        vue+springboot實現項目的CORS跨域請求

        vue+springboot實現項目的CORS跨域請求:跨域資源共享CORS(Cross-origin Resource Sharing),是W3C的一個標準,允許瀏覽器向跨源的服務器發起XMLHttpRequest請求,克服ajax請求只能同源使用的限制。關于CORS的詳細解讀,可參考阮一峰大神的博客:跨域資源共享CORS詳解。本文為通過一個小dem
        推薦度:
        導讀vue+springboot實現項目的CORS跨域請求:跨域資源共享CORS(Cross-origin Resource Sharing),是W3C的一個標準,允許瀏覽器向跨源的服務器發起XMLHttpRequest請求,克服ajax請求只能同源使用的限制。關于CORS的詳細解讀,可參考阮一峰大神的博客:跨域資源共享CORS詳解。本文為通過一個小dem

        跨域資源共享CORS(Cross-origin Resource Sharing),是W3C的一個標準,允許瀏覽器向跨源的服務器發起XMLHttpRequest請求,克服ajax請求只能同源使用的限制。關于CORS的詳細解讀,可參考阮一峰大神的博客:跨域資源共享CORS詳解。本文為通過一個小demo對該博客中分析內容的一些驗證。

        1.springboot+vue項目的構建和啟動

        細節不在此贅述,任何簡單的springboot項目就可以,而前端vue項目只需用axios發ajax請求即可。

        我的demo里填寫用戶名和密碼,然后點擊登錄按鈕向后臺發起登錄請求,js代碼如下:

        methods:{
         login:function() {
         //var userParams = this.$qs.stringify(this.User);
         /* var userParams = JSON.stringify(this.User);*/
         this.$axios.post("http://localhost:8080/login",this.User).then(res=>{
         alert(res.data);
         });
         }
         }

        后臺控制器部分,對登錄請求的處理:

        /*CORS設置方法1:@CrossOrigin(origins = "http://localhost:8081", maxAge = 3600)*/
         @RequestMapping(value="/login",method = RequestMethod.POST, produces = "application/json;charset=UTF-8" )
         @ResponseBody
         public String userlogin(@RequestBody JSONObject user) {
        	/*String name=request.getParameter("name");
        	String password=request.getParameter("password");*/
        	System.out.println("name: " + user.get("name"));
        	System.out.println("password: " + user.get("password"));
        	String name = (String) user.get("name");
        	String password = (String) user.get("password");
         	if(name.equals("zsz") && password.equals("888888")){ 	
        	return "login success!";
        	}else{
        	return "login failed";
        	}
         }

        后臺以8080端口啟動,前臺以8081啟動,此時無法跨域,瀏覽器控制臺會報錯:


        2.springboot設置CORS

        此處主要有兩種方法(但是貌似有其他博客還有更多種),在springboot中實現都比較簡單(反正springboot好像就是各種省事各種簡單)。

        方法1:

        @CrossOrigin(origins = "http://localhost:8081", maxAge = 3600)

        直接在控制器方法前注解,設置可以跨域的源ip和端口,以及預檢有效期maxAge等參數。

        方法2:

        編寫配置類,配置全局的CORS設置。

        @Configuration
        public class MyCorsConfig {	
        	@Bean
        	public WebMvcConfigurer corsConfigurer(){
        	 return new WebMvcConfigurerAdapter() {
         @Override
         public void addCorsMappings(CorsRegistry registry) {
         // 限制了路徑和域名的訪問
         /*registry.addMapping("/api*").allowedOrigins("http://localhost:8081");*/
         registry.addMapping("/**")
         .allowedOrigins(ALL)
         .allowedMethods(ALL)
         .allowedHeaders(ALL)
         .allowCredentials(true);
         }
         };
        	}	
        }

        如果路徑配置成以上的 /**則對所有源路徑均接受跨域訪問,當然也可以配置更詳細的路徑。

        這樣可以成功訪問后臺,瀏覽器中可以看到http請求和響應的結果如下圖:


        3.CORS非簡單請求預檢請求的抓包驗證

        根據阮一峰大神的博客所述,CORS簡單請求只發送一次請求,服務器設置支持CORS則會在響應內容中添加Acess-Control-Allow-Origin等字段,否則不添加,瀏覽器知道出錯,從而拋出異常;CORS非簡單請求時,會先進行一次預檢(preflight)請求,瀏覽器根據響應內容進行正式的XMLHttpRequest請求。

        在我的demo中,我通過將http請求的 content-type 設置為application/json進行非簡單請求。此處要說明一下,axios默認情況下發送請求的格式是application/json而不是我之前用jQuery發送ajax請求的application/x-www-form-urlencoded, 而我之前用的另一種方法構造查詢字符串,最終發送請求的content-type會變為application/x-www-form-urlencoded。

        var userParams = this.$qs.stringify(this.User)

        前臺請求代碼如本文第一節中所示,在axios請求中直接傳入User對象即可。在后端不設置CORS的時候,控制器信息為:


        協議內容為:


        而設置了CORS,預檢請求結果為:

        請求成功,并且在響應頭中添加了各種字段。

        再次發起XHR請求后,結果為:


        以上實驗驗證證明了兩種CORS請求的過程正如預期。希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        vue+springboot實現項目的CORS跨域請求

        vue+springboot實現項目的CORS跨域請求:跨域資源共享CORS(Cross-origin Resource Sharing),是W3C的一個標準,允許瀏覽器向跨源的服務器發起XMLHttpRequest請求,克服ajax請求只能同源使用的限制。關于CORS的詳細解讀,可參考阮一峰大神的博客:跨域資源共享CORS詳解。本文為通過一個小dem
        推薦度:
        標簽: VUE 實現 boot
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 亚洲免费综合色在线视频| 国产精品免费无遮挡无码永久视频| 777亚洲精品乱码久久久久久| 亚洲综合一区二区| 亚洲美国产亚洲AV| 全部一级一级毛片免费看| 国产午夜无码片免费| 99爱在线精品免费观看| 免费一级毛片免费播放| 亚洲乱亚洲乱淫久久| 亚洲sm另类一区二区三区| 久久久久免费看黄a级试看| 成人免费在线观看网站| 中文亚洲成a人片在线观看| 亚洲精品电影天堂网| 国产一卡二卡四卡免费| 亚洲精品午夜国产va久久| a国产成人免费视频| 午夜国产羞羞视频免费网站| 久久亚洲熟女cc98cm| h视频在线免费看| 亚洲AV美女一区二区三区| 男女猛烈激情xx00免费视频| 亚洲一区二区三区在线播放| 亚洲卡一卡二卡乱码新区| 小小影视日本动漫观看免费| 亚洲精品自拍视频| 毛片a级毛片免费播放下载| 精品亚洲成a人在线观看| 国产高清免费视频| 欧美色欧美亚洲另类二区| 男女交性永久免费视频播放| 亚洲欧洲国产视频| 久久久久久曰本AV免费免费| 国产AV无码专区亚洲精品| 一级黄色片免费观看| 亚洲JIZZJIZZ中国少妇中文| 国产成人亚洲综合a∨| 全免费a级毛片免费看不卡| a毛片成人免费全部播放| 免费在线观看黄网|