【摘要】跨域问题是前端开发人员比较常见的问题, 那么跨域出现的原因, 该如何解决跨域, VUE中对跨域又是怎样处理的呢
【作者】田鋆鹏
一、 前端为什么会出现跨域问题?
跨域问题是浏览器同源策略限制,当前域名的js只能读取同域下的窗口属性
而我们常见的网址一般包括协议, 域名, 端口几个部分, 在浏览器的同源策略下,协议不同 域名不同 端口不同都会出现跨域
浏览器的同源策略是确保浏览器安全的特别重要的一个安全策略
如果没有同源策略:在一个域上加载的脚本不允许访问另一个域上文本属性 不然通过内嵌 iframe 恶意添加 javaScript 脚本就可以轻松获取到用户信息
何为同源:url 是由协议、域名、端口和路径组成 如果两个路径的协议、域名、端口都相同则表示再同一个域上
比如, 从A页面请求B页面的一些数据, 如果没有同源策略, 就不会出现跨域问题, 就可以轻松的拿到B页面的数据, 但是因为有浏览器的同源策略,在进行这样的操作时, 浏览器的是会报跨域的错误的
这样的错误就说明出现的跨域问题, 那么如何解决跨域问题呢
二、 解决跨域问题有以下几种方式
1.使用jsonp
2.服务端代理
3.服务端设置Request Header头中Access-Control-Allow-Origin为指定可获取数据的域名
1. jsonp
jsonp解决跨域问题的原理是,浏览器的script标签是不受同源策略限制(你可以在你的网页中设置script的src属性问cdn服务器中静态文件的路径)。那么就可以使用script标签从服务器获取数据,请求时添加一个参数为callbakc=?,?号时你要执行的回调方法。