跨域怎么产生
总的来说是因为浏览器的同源策略造成的,(什么是同源策略呢?协议、域名、端口相同就叫同源策略)。浏览器从用户角度出发,如果说是请求或者传参到一个不同源的url就会不安全。jsonp可以解决,但是他有缺点,它只能用GET请求。CORS他允许浏览器向跨源服务器,发出XMLHTTPREQUIEST请求,从而解决ajax的短板,但是CORS需要浏览器服务器同时支持,IE不能低于10。我还知道websocket和node代理,具体就不知道了(一般来说都是后端写,后端就一代码的事,我前端来解决就会麻烦点。从用户和代码量来看都是不太好的)
jsonp解决跨域
用ajax请求数据的时候有个参数dataType可以填jsonp。底层利用的就是script标签里面的src属性,给后端发送一个json格式的数据,前端就需要用一个来接受,接收的形式类似于函数的调用
代理解决跨域
在vue.config中有index.js里有个 proxyTable
proxyTable:{ '/baidu':{ //关键字 target:"目标域名地址" changeOrigin:true //允许跨域 pathRewritr:{ //路径重写规则【可选】目的就是地址中没有关键词 '^/baidu':"" } } }
后端解决
后端下载cors模块帮助解决跨域更简单