跨域的问题

什么是跨域?

跨域指的是浏览器页面访问不同的服务器的时候,因为同源策略限制导致的请求不成功。‘

解决方法:

1.JSONP

原因:<script>标签不受同源策略的影响

用法:前端准备搞回调函数,放入<script>标签中的src属性中,向后端发送请求的时候,后端就能拿到回调函数,将数据作为参数传给回调函数,前端自然就会收到数据

缺点:只支持get请求,不支持post请求,因为发送的请求携带在script的url中,不带请求体

2.cors跨域请求

用法:首页浏览器会判断该请求是简单请求还是复杂请求,如果是简单请求,会自动在请求头中加上origin(值为浏览器url),后端收到请求后需打开cors接口:设置access-control-allow-origin的值为前端传过来的origin。如果是非简单请求(put,delete,axios请求等),浏览器会先发送一条预检option请求,预检请求会询问服务器是否支持当前域名的请求,是否支持修改的头信息字段,收到肯定回复后,浏览器才发送真正的http请求。

对于需要携带cookien的cors跨域请求:

后端设置access-control-allos-credential为true,前端设置xhr.withcredential为true。注意需要携带cookie的话,后端的access-control-allow-origin不能设置为*。

3.使用代理服务器

a要访问c,两者不同源,则a先去访问和a同源的代理服务器b,由于服务器之间不存在跨域,由b去获得c的api接口,返回给a

4.windowt提供的课跨域方法Postmesaage

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值