摘要:部署到線上卻發現,請求總是指向第一個二級域名,其他的二級域名訪問不到。后端配置了后端,不僅僅配置了二級域名,還配置了二級目錄,前端部署的服務也一樣需要二級目錄。
http-proxy
http-proxy是一個nodejs的http代理庫,已經被webpack-dev-server集成進來,做代理使用。原因是在前后端分離大行其道的今天,我們如果需要在本地調后端api接口,不配置hostname的話,必然是一個跨域的請求。因為瀏覽器的跨域安全限制,調取是不通的,所以本地代理就成了一個本地開發環境的必選項。
"/saasapi/*": { target: "http://ebk.17u.cn", },
意思呢大概就是把saasapi開頭的ajax請求重定向到http://ebk.17u.cn
本地開發沒有問題,線上如果也是用nodejs的服務器,如果恰巧也配置了代理,部署到線上出現了意想不到的問題~
后端nginx配置了反向代理一個網站主域名是17u.cn,后端如果部署了多個api服務,那這樣子他的api服務可能是這樣子
主域名 | 二級域名1 | 二級域名2 | 二級域名3 |
---|---|---|---|
17u.cn | ebk.17u.cn | ebk2.17u.cn | ebk3.17u.cn |
前端同樣部署了3個nodejs服務,也同樣配置了3個代理。部署到線上卻發現,請求總是指向第一個二級域名,其他的二級域名訪問不到。
百思不得姐!
后來仔細查看http的信息,發現幾個服務的ajax請求發到服務器上之后,hostname都是瀏覽器的域名,而nginx的反向代理配置都是根據hostname來做轉發的。因為我們的hostname對于nginx來說都是陌生的,所以就默認轉發到默認的第一個服務上去了。
查了http-proxy配置,哈哈,果然有這種修改的配置,只要稍微改一下就好了。
"/saasapi/*": { target: "http://ebk.17u.cn", changeOrigin: true },
changeOrigin: true意思就是把hostname改為和target一致就可以了。這樣后端nginx就可以正常轉發了。
后端配置了cookie Path后端api,不僅僅配置了二級域名,還配置了二級目錄,前端部署的服務也一樣需要二級目錄。
api地址就變成這個樣子:
ebk.17u.cn/saasapi
前端地址:
trans.17u.cn/saas
代理配置做對應調整
"/saas/saasapi/*": { target: "http://ebk.17u.cn", changeOrigin: true, rewrite: path => path.replace(/^/saas/saasapi/cxy/, "/saasapi") },
這樣子看起來很正常吧,但是問題出在哪呢?后端把登錄之后設置的cookie也設置了path:Path="/saasapi"。
這樣子問題就來了,trans.17u.cn/saas當前域名下讀取不到/saasapi下面的cookie,導致前端登錄每次都通過,但就是不能正常調api,每次調取都提示沒有登錄。
有問題還是先查文檔。
還是發現了解決方案
cookiePathRewrite: { "/saasapi": "/saas/saasapi" }
重寫cookie路徑就好了,同理如果后端接口指定了cookie的domain,一樣有方案解決
cookieDomainRewrite
還有一些其他rewrite,應該都比較好用的。
ps:在解決過程中,發現改了也總是不能成功,一度懷疑是庫的bug。后來發現需要清除掉chrome的cookie。
直接點Application -> Cookie:刪除下面的cookie是不行的。清理不掉全部的cookie,需要到Application -> clear storage中,clear site data才可以。最終成功
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/96895.html
摘要:解決一個歷史遺留問題博客上線后第一篇關于的博客就是綁定域名與反向代理是關于的代理設置,到現在為止線上幾個二級小站也還是在使用那個模塊,卻怎么也沒想到,這些小站的一個共同的遺留問題也源自這個代理模塊問題在于用已知的各種方式獲取到的訪問者的永 解決一個歷史遺留問題: 博客上線后第一篇關于Nodejs的博客就是——Nodejs綁定域名與反向代理;是關于Nodejs的代理設置,到現在為止線上幾...
摘要:所有的都不是完整的程序,所有未上線的程序都僅僅是個作為開發的后起之秀,在現在的國內環境下,雖比不上的火熱,沒有那么廣大的群眾基礎,蓋不過的高大上,但基于谷歌引擎的極速,異步與事件模型,無疑將是開發的重大革新我是一個小前端,自從知道,就覬覦其 所有的Demo都不是完整的程序,所有未上線的程序都僅僅是個Demo; Nodejs作為Web開發的后起之秀,在現在的國內環境下,雖比不上PHP的火...
摘要:面試造航母,工作擰螺絲,新公司面試技術官要求會技術棧。然而公司項目暫時并沒有用到,不過為了提升實戰經驗,還是在業余時間搗騰出一個,以下是項目介紹。前段為了學習小程序的開發,做了個小程序名叫口袋吉他,這也是個人興趣驅使的開發想法。 面試造航母,工作擰螺絲,新公司面試技術官要求會react技術棧。 問:有使用過React么?答:沒,只使用過Vue。又問:給你一星期能上手開發么?答:可以(一...
摘要:背景隨著互聯網應用工程規模的日益復雜化和精細化,我們在開發一個標準應用的早已開始告別單干模式,為了提升開發效率,前后端分離的需求越來越被重視,前端負責展現交互邏輯,后端負責業務數據接口,基本上也成為了我們日常項目分工中的標配,但是前后端分離 背景 隨著互聯網應用工程規模的日益復雜化和精細化,我們在開發一個標準web應用的早已開始告別單干模式,為了提升開發效率,前后端分離的需求越來越被重...
摘要:搭建本地服務器參考了的搭建本地服務器做轉發使用實現,官方文檔配置服務器和轉發接口地址判斷如果是接口訪問,則通過轉發這里參考的源碼,補充了幾個字體文件的。 起因:公司的產品更換前端框架,接口的訪問原本是通過nginx配置反向代理實現的,本地沒有安裝nginx,就用node.js做一個。 node.js搭建本地http服務器參考了shawn.xie的《nodejs搭建本地http服務器》...
閱讀 2020·2021-10-09 09:41
閱讀 1596·2021-09-28 09:36
閱讀 1100·2021-09-26 09:55
閱讀 1285·2021-09-10 11:17
閱讀 1141·2021-09-02 09:56
閱讀 2755·2019-08-30 12:58
閱讀 2927·2019-08-29 13:03
閱讀 1847·2019-08-26 13:40