1.为什么会出现跨域?
因为浏览器的同源策略(the same-origin policy),限制了不同源之间的交互(协议、端口号、域名三者一样即为同源)。而如果不同源:总共会有三种行为受到限制:
- cookie, localStorage, indexDB无法读取
- Dom无法取得
- ajax请求无法发送
因为ajax请求只能发给同源的网址,所以当我们有想通过js发起http通信,而目标服务器在不同源时就会出现跨域的问题。针对这种情况可以通过cors、代理、jsonp、websocket的方式解决。这篇文章主要讲一讲代理的解决方案
2.代理如何解决?
因为浏览器有同源策略的限制,而服务器没有,因此我们可以先把请求发送给同源的服务器,再由同源的服务器(也就是代理服务器)转发给目标服务器,解决跨域的限制。
3.过程解析
假设当前域为aaa.com,要向bbb.com发送请求。 例:
axios.get('/user') //当url为相对路径时,此请求会被发送到当前域
因此可以在当前域下配置nginx代理,要拦截哪些请求,并再把这些请求转发到目标服务器。