什么是跨域,为什么会跨域,怎么解决跨域

浏览器策略

出于安全的考虑,浏览器只允许向协议域名端口完全相同的服务器发送请求。同源策略是一种约定,也是浏览器最基本的核心安全功能。
协议域名端口只要有一个不同,浏览器就会拒绝该请求。

解决办法

JSONP

JSONP利用的是script标签不受同源策略限制来加载script代码,但这种方法也是很有局限性的,首先,script标签只能发送get请求,其次,该方法只能返回一个函数的调用,需要提前定义好函数,然后把函数参数通过传参的方式传给后端,后端解析好参数参数值后,将形参数据拼接到一个函数的调用并返回一个函数的执行。
JSONP唯一的优势就是支持所有的老式浏览器。

cors(cross original resource sharing)跨域资源共享

跨域资源共享是W3C标准,该标准允许非同源的浏览器与服务器之间进行通信,克服了ajax只能只能使用同源的限制

首先
CORS需要浏览器和服务器同时支持。目前,所有浏览器都支持该功能。万恶的IE除外,IE浏览器不能低于IE10。
实现CORS的关键是服务器,只要服务器实现了CORS接口,就可以实现跨源通信。

CORS请求分为简单请求和复杂请求,复杂请求之前,浏览器会发送一个预检请求(option)

只要满足以下条件,均为简单请求

  • 请求方法是以下三种方法之一:
    • HEAD
    • GET
    • POST
  • HTTP的头信息不超出以下几种字段:
    • Accept
    • Accept-Language
    • Content-Language
    • Last-Event-ID
    • Content-Type:只限于三个值application/x-www-form-urlencoded、multipart/form-data、text/plain

其他都是非简单请求(复杂请求)

非简单请求是那种对服务器有特殊要求的请求,比如请求方法是PUTDELETE,或者Content-Type字段的类型是application/json

浏览器先询问服务器,当前网页所在的域名是否在服务器的许可名单之中,以及可以使用哪些HTTP动词和头信息字段。只有得到肯定答复,浏览器才会发出正式的XMLHttpRequest请求,否则就报错。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值