精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

前后端分離項目,如何解決跨域問題?

開發(fā) 前端
跨域資源共享,也就是 Cross-Origin Resource Sharing,簡拼為 CORS,是一種基于 HTTP 頭信息的機制,通過允許服務器標識除了它自己以外的資源,從而實現(xiàn)跨域訪問。

跨域問題是前后端分離項目中非常常見的一個問題,舉例來說,編程貓(codingmore)學習網(wǎng)站的前端服務跑在 8080 端口下,后端服務跑在 9002 端口下,那么前端在請求后端接口的時候就會出現(xiàn)跨域問題。

403 Forbidden 是HTTP協(xié)議中的一個狀態(tài)碼(Status Code),意味著后端服務雖然成功解析了請求,但前端卻沒有訪問該資源的權(quán)限。

那怎么解決這個問題呢?通常有兩個思路:

  • 前端使用 Nodejs 代理(開發(fā)環(huán)境下,生產(chǎn)環(huán)境下可以用 Nginx 替代)
  • 或者后端開啟跨域資源共享

一、關于跨域

跨域?qū)τ谇昂蠖碎_發(fā)者來說,就像一塊狗皮膏藥,無論是面試還是開發(fā)中,都會經(jīng)常遇到。

之所以出現(xiàn)跨域問題,是因為瀏覽器的同源策略,為了隔離潛在的惡意文件,為了防御來自歪門邪道的攻擊,瀏覽器限制了從同一個源加載的文檔或腳本與來自另一個源的資源進行交互。

前面我們提到了,前端跑在 8080 端口下,后端跑在 9002 端口下,這種情況就屬于不同的源(域名不同,協(xié)議不同,端口不同),所以 8080 端口下的前端請求直接訪問 9002 端口下的后端接口時就訪問失敗了。

那正確的打開方式是什么呢?我們前面也提到了,前端使用 Nodejs 代理或者后端開啟跨域資源共享,我們一一來實踐下。

二、Nodejs 代理

在 Nodejs 出現(xiàn)之前,JavaScript 編寫的程序通常需要在用戶的瀏覽器上執(zhí)行,Node.js 出現(xiàn)后,JavaScript 也能用于服務端編程了。Nodejs 一系列的內(nèi)置模塊使得程序可以脫離 IIS、Apache 這種 Web 服務作為獨立的服務器執(zhí)行。

我們使用 Nodejs 來解決跨域問題的思路就是,在本地創(chuàng)建一個虛擬服務器,對 8080 端口下的前端請求進行代理,同時接收 9002 端口下的服務器端響應,這樣服務端和服務端進行數(shù)據(jù)的交互就不會出現(xiàn)跨域問題了。

第一步,配置 Nodejs 代理服務

module.exports = {
dev: {
// Paths
assetsSubDirectory: 'static',
assetsPublicPath: '/',
proxyTable: {
'/api': {
target: 'http://localhost:9002', // 你請求的第三方接口
changeOrigin: false, // 在本地會創(chuàng)建一個虛擬服務端,然后發(fā)送請求的數(shù)據(jù),并同時接收請求的數(shù)據(jù),這樣服務端和服務端進行數(shù)據(jù)的交互就不會有跨域問題
pathRewrite: { // 路徑重寫,
'^/api': '' // 替換target中的請求地址,也就是說以后你在請求http://api.codingmore.top/v2/XXXXX這個地址的時候直接寫成/api即可。
}
},
},
}

第二步,配置前端訪問請求路徑


module.exports = merge(prodEnv, {
NODE_ENV: '"development"',
VUE_APP_BASE_API: '"/api"'
// VUE_APP_BASE_API: '"http://localhost:9002"'
})

第三步,重啟前端服務

再次點擊「登錄」按鈕,可以看到請求的 URL 發(fā)生了改變,原來是 http://localhost:9002/users/login,現(xiàn)在是 http://localhost:8080/api/users/login。與此同時,可以看到多了一個 Remote Address,端口也是 8080,也就是說經(jīng)過 Nodejs 的代理,前后端的交互在同一個源下面了,這樣就不會發(fā)生跨域問題了。

同時,可以看得到,服務器端返回的狀態(tài)碼變成了 200,表示請求成功。

三、開啟跨域資源共享

跨域資源共享,也就是 Cross-Origin Resource Sharing,簡拼為 CORS,是一種基于 HTTP 頭信息的機制,通過允許服務器標識除了它自己以外的資源,從而實現(xiàn)跨域訪問。

第一步,開啟 CORS 支持

在 Spring Boot 應用中,加入 CORS 的支持簡單到不忍直視,添加一個配置類就可以了。

@Configuration
public class GlobalCorsConfig {
@Bean
public CorsFilter corsFilter() {
CorsConfiguration config = new CorsConfiguration();
// 設置你要允許的網(wǎng)站域名
config.addAllowedOrigin("http://localhost:8080");
//允許跨域發(fā)送cookie
config.setAllowCredentials(true);
//放行全部原始頭信息
config.addAllowedHeader("*");
//允許所有請求方法跨域調(diào)用
config.addAllowedMethod("*");
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
source.registerCorsConfiguration("/**", config);
return new CorsFilter(source);
}
}

第二步,重啟后端服務,再次點擊登錄按鈕,發(fā)現(xiàn)請求已經(jīng)可以正常訪問了。

本例中,后端返回 Access-Control-Allow-Origin: http://localhost:8080 就表示,跑在 9002 端口下的后端接口可以被 8080 端口的前端請求訪問。

如果允許所有域名進行跨域調(diào)用的話,只需改變一行代碼即可。

//允許所有域名進行跨域調(diào)用
config.addAllowedOriginPattern("*");
// 設置你要允許的網(wǎng)站域名
// config.addAllowedOrigin("http://localhost:8080");

對于 login 這種簡單的請求來說,它們是不會觸發(fā) CORS 預檢的,因此不需要在服務器端增加其他配置就可以了。那什么是簡單請求呢?

1)請求方法是以下三種方法之一:

  • HEAD
  • GET
  • POST

2)HTTP 的頭信息不超出以下幾種字段:

  • Accept
  • Accept-Language
  • Content-Language
  • Last-Event-ID
  • Content-Type:只限于三個值 application/x-www-form-urlencoded、multipart/form-data、text/plain

那對于會觸發(fā) CORS 預檢的非簡單請求(比如說請求方法是 PUT 或 DELETE,或者 Content-Type 字段的類型是 application/json,或者請求消息頭包含了一些自定義的字段),該怎么辦呢?

非簡單請求在正式通信之前,會增加一次 HTTP 查詢請求,稱為“預檢”請求。預檢請求通過后,才會返回正常的響應內(nèi)容。

拿編程貓的文章管理頁來舉例,該頁面會向后端發(fā)起一個 posts/queryPageable 的分頁查詢,該請求包含了一個自定義的消息頭 Authorization,于是瀏覽器認為該請求是一個非簡單請求,然后就會自動發(fā)起一次 OPTIONS 請求,但由于我們的 Spring Boot 項目整合了 SpringsScurity 安全管理框架,沒有對OPTIONS請求放開登錄認證,導致驗證失敗,文章分頁請求的響應數(shù)據(jù)就沒有返回回來。

第三步,通過以下代碼給 OPTIONS 請求放行。

public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity httpSecurity) throws Exception {
ExpressionUrlAuthorizationConfigurer<HttpSecurity>.ExpressionInterceptUrlRegistry registry = httpSecurity
.authorizeRequests();
//允許跨域請求的OPTIONS請求
registry.antMatchers(HttpMethod.OPTIONS)
.permitAll();
}
}

再次重啟后端服務,重新訪問文章列表接口,發(fā)現(xiàn)有響應數(shù)據(jù)了。

非簡單請求必須首先使用 OPTIONS 請求方法發(fā)起一個預檢請求到服務器端,以獲知服務器是否允許該實際請求。"預檢請求“的使用,避免了跨域請求對服務器的用戶數(shù)據(jù)造成未預期的影響。

我們來通過兩張圖片簡單總結(jié)一下預檢請求的整個過程,第一張,發(fā)起 OPTIONS 預檢請求:

第二章,發(fā)起正式請求:

四、源碼路徑

編程貓后端源碼:

https://github.com/itwanger/coding-more

編程貓后臺管理的前端源碼:

https://github.com/itwanger/codingmore-admin-web

參考鏈接:

跨域:https://segmentfault.com/a/1190000015597029

CORS:https://developer.mozilla.org/zh-CN/docs/Web/HTTP/CORS

阮一峰:https://www.ruanyifeng.com/blog/2016/04/cors.html

簡單請求+預檢請求:https://github.com/amandakelake/blog/issues/62


責任編輯:武曉燕 來源: 沉默王二
相關推薦

2022-10-13 14:11:29

瀏覽器域名端口

2022-09-06 10:26:38

前后端分離Vue跨域

2021-06-06 13:05:15

前端跨域CORS

2024-10-29 16:41:24

SpringBoot跨域Java

2022-09-07 07:05:25

跨域問題安全架構(gòu)

2022-03-11 10:01:47

開發(fā)跨域技術(shù)

2023-02-15 07:03:41

跨域問題面試安全

2023-04-07 10:51:39

2019-06-12 19:00:14

前后端分離AppJava

2021-10-20 18:21:18

項目技術(shù)開發(fā)

2020-08-13 08:04:31

配置跨域框架

2023-02-08 16:29:58

前后端開發(fā)

2021-03-08 08:16:42

MySQL分離架構(gòu)

2017-08-20 12:49:59

瀏覽器跨域服務器

2025-02-10 08:39:17

2021-09-18 09:45:33

前端接口架構(gòu)

2022-09-01 07:18:21

分離項目Vue

2025-01-02 09:48:52

JVMCARD_元素

2012-09-05 11:09:15

SELinux操作系統(tǒng)

2017-02-15 10:18:32

架構(gòu)前后端分離
點贊
收藏

51CTO技術(shù)棧公眾號

www国产亚洲精品| 久久精品一偷一偷国产| 男人天堂网视频| 成人在线二区| 精品在线一区二区| 欧美黄色性视频| 国产熟妇久久777777| japansex久久高清精品| 精品国产乱码久久久久酒店| 视频一区二区三区免费观看| 超碰人人人人人人| 狂野欧美一区| 欧美第一黄色网| 亚洲欧美va天堂人熟伦| 超碰成人在线免费| 欧美日韩不卡一区二区| www.99热这里只有精品| 免费观看久久久久| 久久在线免费观看| 97视频资源在线观看| 无码人妻久久一区二区三区 | 亚洲毛片在线看| 午夜激情影院在线观看| 性高爱久久久久久久久| 亚洲一区二区三区四区五区黄 | 国产精品实拍| 国产日韩欧美精品一区| 韩国成人一区| 亚洲精品视频91| 激情综合色丁香一区二区| 欧美亚洲另类视频| 国产真实夫妇交换视频| 亚洲综合专区| 久久精品亚洲一区| 黄色裸体一级片| 视频精品在线观看| 精品视频在线播放免| 国产精品久久久久久在线观看| 日韩三区四区| 欧美视频在线观看一区| 国内外免费激情视频| 成年男女免费视频网站不卡| 亚洲欧美国产高清| youjizz.com亚洲| 尤物视频在线免费观看| 国产亚洲精品资源在线26u| 国内精品二区| 人妻一区二区三区| 成人av电影免费观看| 国产精品国产精品| 国产 日韩 欧美 精品| 国产成人久久精品77777最新版本 国产成人鲁色资源国产91色综 | 欧美一区二区三区四区在线观看地址 | 国产树林野战在线播放| 在线日本视频| 国产精品久久久久aaaa樱花 | jyzzz在线观看视频| 国产日韩欧美精品综合| 人禽交欧美网站免费| 国产午夜在线观看| 欧美激情在线看| 亚洲精品美女久久7777777| av基地在线| 中文字幕一区二区在线播放| 国产系列第一页| 午夜av在线播放| 亚洲国产精品人人做人人爽| 91精品国产91久久久久麻豆 主演| www成人免费观看| 精品国产户外野外| 国产精品涩涩涩视频网站| 亚洲四虎影院| 91麻豆精品国产91| 在线精品视频播放| 希岛爱理av免费一区二区| 亚洲视频一区二区| 无码人妻精品中文字幕| 国产精品v亚洲精品v日韩精品| 久久久久久久色| 少妇高潮av久久久久久| 蜜桃av噜噜一区| 99re在线国产| 神马精品久久| 国产精品福利av | 久久一区精品| 成人福利网站在线观看| www.黄色国产| 久久综合av免费| 在线成人性视频| 丁香花高清在线观看完整版| 久久成人综合| 最近中文字幕mv在线一区二区三区四区| 91精品国自产在线| 中文字幕一区二区三区欧美日韩 | 成人免费视频caoporn| 久久久精品国产一区二区三区| 国产高清av在线| 一区二区三区四区在线免费观看| 3d动漫一区二区三区| 亚洲精品国产嫩草在线观看| 日韩午夜中文字幕| 中文字幕网站在线观看| 欧美日一区二区在线观看 | 日韩亚洲欧美视频| 国产成人亚洲一区二区三区| 精品久久久久久久久久久院品网| 一级片手机在线观看| 欧美黄色一区| 国产精品永久免费视频| 亚洲欧洲精品视频| 一区二区三区中文在线观看| 国产欧美高清在线| 波多野结衣在线一区二区| 中文字幕亚洲欧美日韩高清| 国产 欧美 日韩 在线| 国产自产高清不卡| 日韩激情视频| 亚洲第一av| 精品福利av导航| 免费在线观看黄色小视频| 久久高清国产| 国产伦理久久久| a黄色片在线观看| 欧美亚洲一区三区| 欧美精品黑人猛交高潮| 国产综合精品| 5566中文字幕一区二区| 五月婷婷在线视频| 91黄视频在线| 国产三级视频网站| 亚洲毛片av| 国产精品伊人日日| 欧美24videosex性欧美| 欧美一区二区三区日韩| 亚洲一二三在线观看| 日本欧美久久久久免费播放网| 你懂的网址一区二区三区| 91探花在线观看| 日韩欧美一区在线| 国产女人18水真多毛片18精品| 全部av―极品视觉盛宴亚洲| 日本一区二区精品| 亚洲va中文在线播放免费| 日韩精品一二三四区| 日韩不卡视频在线| 99久久久无码国产精品| 免费看国产曰批40分钟| 老司机aⅴ在线精品导航| 国内精品久久久久久影视8| 精品人妻无码一区二区色欲产成人| 日韩一区欧美小说| 波多野结衣在线免费观看| 亚洲美女视频| 亚洲xxx自由成熟| av大全在线| 日韩天堂在线观看| 免费人成视频在线| 91最新在线视频| 狠狠人妻久久久久久综合麻豆| 丰满人妻一区二区| av中文字幕在线免费观看| 国产午夜久久| 精品国产乱码久久久久久丨区2区| 色呦呦在线播放| 日韩女优毛片在线| 亚洲国产精品午夜在线观看| 99精品国产91久久久久久| 欧美久久久久久久久久久久久| 中文字幕一区二区三区日韩精品| 国产+人+亚洲| 青青草av免费在线观看| 欧美亚洲综合一区| 91杏吧porn蝌蚪| av一区二区不卡| 亚洲乱码国产一区三区| 欧美韩日一区| 粉嫩av免费一区二区三区| 九色porny自拍视频在线播放 | 秋霞av鲁丝片一区二区| 午夜国产精品一区| 午夜影院黄色片| 国产精品综合av一区二区国产馆| 美脚丝袜脚交一区二区| 国产精品免费不| 91啪国产在线| 中老年在线免费视频| 日韩一区二区三区xxxx| 国产18精品乱码免费看| 91久久精品日日躁夜夜躁欧美| 久久国产高清视频| 成人aaaa免费全部观看| 在线观看av网页| 国一区二区在线观看| 欧美在线一区二区三区四区| 91嫩草国产线观看亚洲一区二区| 国语自产精品视频在线看一大j8| 欧洲成人av| 欧美一卡2卡三卡4卡5免费| 日韩一级片av| 久久人人97超碰com| 午夜福利123| 久久精品天堂| 日韩av在线播放不卡| 日本黄色精品| 精品一区二区三区视频日产| 韩国精品视频在线观看 | 福利在线小视频| 欧洲亚洲视频| 97se亚洲综合| 成人看片毛片免费播放器| 韩剧1988在线观看免费完整版| 日本成a人片在线观看| 亚洲精品456在线播放狼人| 国产原创中文av| 91国产精品成人| 国产视频不卡| www.xxx麻豆| 久久久久亚洲天堂| 精品一区二区三区久久| 99久久久无码国产精品6| 你懂的国产精品永久在线| 日韩午夜视频在线观看| 久久影院资源站| www.久久艹| 国产精品99久久免费| 国产精品高潮呻吟视频| 自拍在线观看| 8x拔播拔播x8国产精品| 男插女视频久久久| 久久精品久久久久久| 成人精品一区二区三区免费| 日韩av中文在线| 日韩一级片免费在线观看| 日韩三级在线观看| 国产欧美日韩成人| 欧美日韩视频第一区| 国产真人无遮挡作爱免费视频| 五月天欧美精品| 日韩成年人视频| 亚洲午夜免费电影| www国产精品内射老熟女| 黄色av片三级三级三级免费看| 69亚洲精品久久久蜜桃小说| 91久久午夜| av动漫在线免费观看| 久久婷婷蜜乳一本欲蜜臀| 日韩av电影免费播放| 神马久久影院| 欧美高清视频一区| 国产videos久久| 欧美极品色图| 精品日韩毛片| 亚洲开发第一视频在线播放| av伊人久久| 在线视频亚洲自拍| 91精品亚洲| 成年人深夜视频| 在线精品一区二区| 天天夜碰日日摸日日澡性色av| 亚洲免费精品| 激情综合网婷婷| 青青草国产成人99久久| 自拍偷拍一区二区三区四区| 久久福利视频一区二区| 欧美性受xxxx黒人xyx性爽| 国产麻豆91精品| 欧美夫妇交换xxx| 久久影视一区二区| 在线免费黄色小视频| 黄视频网站在线观看| 色哟哟网站入口亚洲精品| 免费在线看黄网站| 欧美成人网在线| 国产美女一区视频| 欧美最顶级的aⅴ艳星| 亚洲欧美se| 国产精品美女无圣光视频| 91精品一久久香蕉国产线看观看| 666精品在线| 欧美人妖在线观看| 亚洲欧美国产精品桃花| 女人香蕉久久**毛片精品| www.av毛片| 青青草国产成人99久久| 99在线观看视频| 北岛玲一区二区| 天堂av手机版| 高潮按摩久久久久久av免费| 成人免费毛片高清视频| 欧美极品少妇xxxxⅹ裸体艺术| 天天影院图片亚洲| 在线午夜精品自拍| 性欧美1819sex性高清大胸| 97在线看免费观看视频在线观看| 成人国产激情| 国产精品国产三级国产专区53 | 久99久视频| 日韩精品第一区| www.av毛片| 久久99国产精品麻豆| 亚洲精品乱码久久久久久久| 国产精品免费视频网站| 在线观看免费国产视频| 欧美精品第1页| 手机看片福利永久| 久久精品青青大伊人av| gay欧美网站| 动漫3d精品一区二区三区| 不卡中文字幕| 久久无码高潮喷水| 国产成人久久精品77777最新版本 国产成人鲁色资源国产91色综 | 亚洲乱码国产乱码精品天美传媒| 怡红院精品视频在线观看极品| 亚洲综合欧美激情| 97精品电影院| 久久网一区二区| 欧美一区二区女人| 国产一二在线观看| 96精品视频在线| 午夜视频在线观看精品中文| 亚洲精品一区二区三区樱花| 亚洲专区一区| 亚洲一级Av无码毛片久久精品| 国产精品不卡在线| 中文字幕 国产精品| 亚洲精品黄网在线观看| 丝袜国产在线| 91中文字精品一区二区| 911精品美国片911久久久 | 日日狠狠久久| 日韩国产精品一区二区| 亚洲永久视频| 国产伦精品一区二区三区妓女| 亚瑟在线精品视频| 亚洲va欧美va| 欧美高跟鞋交xxxxhd| 国产精品亚洲一区二区在线观看| 亚洲免费在线精品一区| 日本中文字幕一区二区有限公司| 91网站免费入口| 一本久道久久综合中文字幕| 午夜视频1000| 日本高清+成人网在线观看| 欧美午夜寂寞| 欧美在线观看成人| 91视频观看免费| 中文字幕69页| 在线观看91久久久久久| 91成人在线| 伊甸园精品99久久久久久| 国模少妇一区二区三区| 丁香花五月激情| 精品国产一区二区三区四区四 | 天天揉久久久久亚洲精品| 911福利视频| 最新久久zyz资源站| 国产熟女一区二区丰满| 欧美激情亚洲国产| 美女扒开腿让男人桶爽久久动漫| 激情五月宗合网| 久久精品一区二区三区不卡牛牛| 日本一本在线观看| 日韩中文字幕网址| 亚洲精品在线a| 日本网站免费在线观看| 久久精品一区二区三区四区| 中文字幕一二区| 欧美精品在线观看| 欧美久久精品| 冲田杏梨av在线| 亚洲欧洲制服丝袜| 五月天久久久久久| 国产精品日韩精品| 欧美涩涩视频| 中文字幕高清视频| 8x8x8国产精品| 岛国毛片av在线| 日本免费高清不卡| 国模少妇一区二区三区| 日本天堂网在线观看| 国产亚洲精品成人av久久ww| 91精品亚洲一区在线观看| 你真棒插曲来救救我在线观看| 久久久综合视频| 国产ts变态重口人妖hd| 97免费在线视频| 日韩啪啪电影网| 国产伦精品一区二区免费| 欧美亚洲国产一区在线观看网站 | 1314成人网| 欧美视频一区二区三区…| 免费大片黄在线观看视频网站| 国产区日韩欧美| 韩日av一区二区| 日本一区二区三区精品| 欧美成人黄色小视频| 免费观看久久av| 日本女人性视频| 欧美亚洲国产怡红院影院| 美女的胸无遮挡在线观看|