亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > Java > 正文

詳解Spring Boot 2.0.2+Ajax解決跨域請求的問題

2024-07-14 08:43:58
字體:
來源:轉載
供稿:網友

問題描述

后端域名為A.abc.com,前端域名為B.abc.com。瀏覽器在訪問時,會出現跨域訪問。瀏覽器對于javascript的同源策略的限制。

HTTP請求時,請求本身會返回200,但是返回結果不會走success,并且會在瀏覽器console中提示:

已攔截跨源請求:同源策略禁止讀取位于 https://www.baidu.com/ 的遠程資源。(原因:CORS 頭缺少 ‘Access-Control-Allow-Origin')。

解決方案

1.jsonp

2.引用A站的js

3.Nginx做A站的反向代理

4.后端服務放開跨域請求

其中,以最后兩種見常。

詳細方案

本文主要描述第四種解決方案:后端服務放開跨域請求。

spring boot中放開跨域請求很簡單。

1.增加一個configuration類

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 wencst * @creation 2017年8月18日 */@Configurationpublic class CustomCORSConfiguration { private CorsConfiguration buildConfig() { CorsConfiguration corsConfiguration = new CorsConfiguration(); corsConfiguration.addAllowedOrigin("*"); corsConfiguration.addAllowedHeader("*"); corsConfiguration.addAllowedMethod("*"); return corsConfiguration; } @Bean public CorsFilter corsFilter() { UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); source.registerCorsConfiguration("/**", buildConfig()); return new CorsFilter(source); }}

增加此類以后,非同源http訪問可以正常進行了,但是會不會有什么問題呢?

對于大部分網站依然需要使用cookie作為前后端傳輸數據的媒介,然而默認非同源請求是不攜帶cookie信息的。

2.服務端允許跨域攜帶cookie信息

在spring boot2.0.2中,允許跨域設置比較簡單,只需增加一個configuration類即可。

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 wencst * @creation 2017年8月18日 */@Configurationpublic class CustomCORSConfiguration { private CorsConfiguration buildConfig() { CorsConfiguration corsConfiguration = new CorsConfiguration(); corsConfiguration.addAllowedOrigin("*"); corsConfiguration.addAllowedHeader("*"); corsConfiguration.addAllowedMethod("*"); corsConfiguration.addExposedHeader("Content-Type"); corsConfiguration.addExposedHeader( "X-Requested-With"); corsConfiguration.addExposedHeader("accept"); corsConfiguration.addExposedHeader("Origin"); corsConfiguration.addExposedHeader( "Access-Control-Request-Method"); corsConfiguration.addExposedHeader("Access-Control-Request-Headers"); corsConfiguration.setAllowCredentials(true); return corsConfiguration; } @Bean public CorsFilter corsFilter() { UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); source.registerCorsConfiguration("/**", buildConfig()); return new CorsFilter(source); }}

增加信息后,在前端依然需要調整AJAX請求,才能在非同源請求中攜帶cookie信息。

3.前端調整

$.ajax({ url: 'http://beta.roboming.com/api.php?s=/Public/AdminLogin.html', type: 'POST', async:true, xhrFields:{  withCredentials:true }, data: {  username:userName,  password:pwd }, success: function(respon){  console.log(respon);  var res=eval(respon); }, error: function(){  alert('服務器發生錯誤!'); }});

此時,當前端向后端服務做跨域請求時,增加

xhrFields:{  withCredentials:true},

就會帶上cookie信息了,同理會帶上token/sessionID等等內容。

測試方法

spring boot中增加一個controller

@Controllerpublic class LoginController { @RequestMapping(value = "setString") @ResponseBody public String setString(HttpServletRequest request, HttpServletResponse response,@RequestParam String value) { request.getSession().setAttribute("username", value); return "OK"; } @RequestMapping(value = "getString") @ResponseBody public String getString(HttpServletRequest request, HttpServletResponse response) { String username = (String)request.getSession().getAttribute("username"); return username; }}

增加一個index.html,來訪問跨域訪問。

<html><head><meta charset="utf-8"><title>跨域請求</title><script src="https://cdn.bootcss.com/jquery/1.10.2/jquery.min.js"></script></head><body><button onclick="set()">set</button><br><br><button onclick="get()">get</button><script>function set(){ $.ajax({ url:'http://wencst.vicp.net/setString?value=10', xhrFields:{  withCredentials:true }, success:function(result){ alert(result); } });}function get(){ $.ajax({ url:'http://wencst.vicp.net/getString', xhrFields:{  withCredentials:true }, success:function(result){ alert(result); } });}</script></body></html>

html文件可以單獨本地訪問即可出現效果,并不一定要形成服務訪問。

當服務端不允許跨域訪問時,html文件訪問均報錯,并調用失敗。

當服務端允許跨域訪問時,html請求訪問成功。

當服務端開啟cookie傳遞,并在html文件中增加 xhrFields參數時,session生效。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
九九热99久久久国产盗摄| 免费97视频在线精品国自产拍| 欧美日韩精品在线观看| 91国偷自产一区二区三区的观看方式| 91超碰中文字幕久久精品| 日本伊人精品一区二区三区介绍| 热久久这里只有精品| 国产欧洲精品视频| 91高清视频在线免费观看| 久久这里有精品| 亚洲精品美女久久| 国产精品丝袜久久久久久不卡| 8090成年在线看片午夜| 主播福利视频一区| 亚洲精品国精品久久99热| 日韩在线免费观看视频| 黑人狂躁日本妞一区二区三区| 国产在线一区二区三区| 综合欧美国产视频二区| 红桃视频成人在线观看| 97视频在线观看视频免费视频| 国产美女久久精品| 日韩在线视频中文字幕| 都市激情亚洲色图| 久久99精品久久久久久琪琪| 国产精品99久久久久久白浆小说| 国产精品一区二区性色av| 久久久久久久久亚洲| 欧美中文字幕在线观看| 日韩欧美在线中文字幕| 91亚洲永久免费精品| 欧美洲成人男女午夜视频| 国内精品久久久久久影视8| 欧美午夜精品久久久久久久| 欧美巨猛xxxx猛交黑人97人| 色偷偷噜噜噜亚洲男人的天堂| 日韩在线中文视频| 国产精品伦子伦免费视频| 国产精品久久久久9999| 欧美日韩国产va另类| 91在线观看免费观看| 国产精品久久av| 色婷婷综合久久久久中文字幕1| 亚洲无限乱码一二三四麻| 欧美中文字幕视频在线观看| 欧美激情视频一区二区三区不卡| 亚洲人成网站色ww在线| 国产乱人伦真实精品视频| 亚洲美女性视频| 中文字幕日韩视频| 亚洲韩国青草视频| 国产精品视频免费观看www| 一区二区三区视频在线| 成人精品久久一区二区三区| 国产日韩欧美中文| 2021久久精品国产99国产精品| 欧洲成人午夜免费大片| 亚洲第一天堂无码专区| 尤物九九久久国产精品的特点| 国产精品视频区1| 91精品啪aⅴ在线观看国产| 欧美极品美女电影一区| 久久精品国产一区二区电影| 疯狂蹂躏欧美一区二区精品| 亚洲高清久久久久久| 精品福利视频导航| 国产欧美va欧美va香蕉在线| 韩国国内大量揄拍精品视频| 欧美裸体xxxx极品少妇软件| 深夜福利日韩在线看| 精品女同一区二区三区在线播放| 欧美在线视频在线播放完整版免费观看| 色偷偷av一区二区三区乱| 欧美激情a在线| 欧美激情亚洲激情| 97视频人免费观看| 欧美激情第1页| 久久成人精品一区二区三区| 久久精品91久久久久久再现| 欧美黑人性猛交| 亚洲天堂av在线免费观看| 国产亚洲精品久久久优势| 国产福利成人在线| 亚洲无av在线中文字幕| 欧美性猛交xxxx乱大交蜜桃| 欧美成人性色生活仑片| 欧美日韩成人在线视频| 一区二区三区视频免费在线观看| 91最新国产视频| 欧美激情网站在线观看| 日韩欧美国产视频| 欧美亚洲成人免费| 91在线观看免费观看| 国产亚洲欧美日韩精品| 最近2019年手机中文字幕| 国产精品视频精品视频| 亚洲美女喷白浆| 91久热免费在线视频| 久久久久免费精品国产| 97超视频免费观看| 国模私拍视频一区| 91久久嫩草影院一区二区| 日韩精品免费在线视频观看| 国产一区av在线| 97人人做人人爱| 亚洲成av人影院在线观看| 国产亚洲免费的视频看| 亚洲电影av在线| 亚洲精品有码在线| 日韩高清电影好看的电视剧电影| 国产a∨精品一区二区三区不卡| 亚洲天堂男人的天堂| 亚洲精品美女在线观看播放| 97福利一区二区| 亚洲欧美制服综合另类| 国产啪精品视频| 国产成人av网| 欧美日韩国产91| 日本国产高清不卡| 欧美在线视频一区二区| 亚洲欧美日本精品| 欧美色视频日本版| 国产精品揄拍一区二区| 日本精品视频在线| 欧美理论电影在线播放| 日本精品免费观看| 日韩视频―中文字幕| 欧美黄色小视频| 国产欧美在线视频| 欧美一区深夜视频| 久久男人的天堂| 亚洲国产精品久久91精品| 欧美专区在线播放| 久久国产视频网站| 亚洲人线精品午夜| 精品亚洲aⅴ在线观看| 亚洲精品中文字幕女同| 亚洲成年人在线播放| 欧美性xxxxhd| 日本精品视频在线| 国产精品久久久久久久久久久新郎| 国内精品久久久久久中文字幕| 成人美女免费网站视频| 国产精品中文久久久久久久| 在线观看日韩av| 欧美超级免费视 在线| 精品美女永久免费视频| 亚洲日本中文字幕| 欧美高清一级大片| 欧美放荡办公室videos4k| xvideos亚洲| 国产精品高潮呻吟久久av黑人| 国产精品第8页| 亚洲欧美综合区自拍另类| 在线午夜精品自拍| 欧美一级视频在线观看| 日韩成人在线免费观看| 91影视免费在线观看| 亚洲欧美中文日韩在线v日本| 亚洲精品午夜精品| 亚洲va欧美va国产综合剧情| 97视频免费在线观看| 欧美性生交xxxxx久久久| 国内精品久久久久|