同源和跨域

167 阅读2分钟

同源

同源指的是两个 URL 地址具有相同的协议、主机名、端口号。

同源策略(英文全称 Same origin policy)是浏览器提供的一个安全功能。浏览器的同源策略规定:不允许非同源的 URL 之间进行资源的交互。]

跨域

跨域指的是两个 URL 地址的协议、主机名、端口号三者中有一个或多个不同。出现跨域的根本原因:浏览器的同源策略不允许非同源的 URL 之间进行资源的交互。

image.png

跨域配置解决方案

突破浏览器跨域限制有两种方案:JSONPCORS 。

image.png

CORS

CORS 是解决跨域数据请求的终极解决方案,全称是 Cross-origin resource sharing。该技术需要浏览器和服务器同时支持,二者缺一不可:

​ 浏览器要支持 CORS 功能(主流的浏览器全部支持,IE 不能低于 IE10)

​ 服务器要开启 CORS 功能(需要后端开发者为接口开启 CORS 功能)

CORS 的两个主要优势:支持 GET、POST、DELETE、PUT、PATCH 等这些常见的 Ajax 请求方式和只需要后端开启 CORS 功能即可,前端的代码无须做任何改动

JSONP(需要服务端配合)

JSONP 是实现跨域数据请求的一种技术解决方案。它只支持 GET 请求,不支持 POST、DELETE 等其它请求。在实际开发中很少被使用,在面试中可能会问到 JSONP 的原理。

JSONP 不是真正的 Ajax 技术,在解决跨域问题时:

​ CORS 方案用到了 XMLHttpRequest 对象,发起的是纯正的 Ajax 请求

​ JSONP 方案没有用到 XMLHttpRequest 对象,因此,JSONP 不是真正的 Ajax 技术

只要用到了 XMLHttpRequest 对象,发起的就是 Ajax 请求!