跨域是什么?怎么解决跨域,面试必问

跨域怎么产生

总的来说是因为浏览器的同源策略造成的,(什么是同源策略呢?协议、域名、端口相同就叫同源策略)。浏览器从用户角度出发,如果说是请求或者传参到一个不同源的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模块帮助解决跨域更简单

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值