nodejs之http-proxy几点常见问题

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才能够。终究胜利

    原文作者:frontoldman
    原文地址: https://segmentfault.com/a/1190000015991864
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞