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