跨域解决方案之代理

164 阅读1分钟

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代理,要拦截哪些请求,并再把这些请求转发到目标服务器。