解决跨域的三种方式

234 阅读1分钟

跨域产生的原因:

主要是不同源导致的。
不同源包括协议,IP或者端口号不同都会产生跨域

跨域解决方式

方式一(CORS)

这个方法是最简单的方法,仅仅需要由服务器发送一个响应头就可以了 header("Access-Control-Allow-Origin:*");
允许任意来源的请求来访问数据

方式二(代理)

devServer: {
    proxy: {
      // 如果请求地址以/api打头,就出触发代理机制
      '/api': {
        target: 'http://192.168.81.173:3000' // 我们要代理的真实接口地址
      }
    }
}

在配置文件中写 VUE_APP_BASE_API = '/api'
比如说现在我们服务器的网址为http://192.168.81.173:8888
而我们要请求的地址是http://192.168.81.173:3000/api/sys/login/
在发送请求时URL直接写成/sys/login/就好了,代理服务器会自动将地址修改为我们要请求的地址。

方式三(jsonp)

<script src="http://www.abc.com/index.php/?paraml=1&callback=fn"></script>

这个方法利用的主要是浏览器仅仅对XMLHttpRequest请求有同源的请求限制,而对标签属性没有,所以jsonp就相当于是利用了这个“漏洞”进行的解决的跨域问题。代用回调函数即可获取到返回的数据