同源
同源指的是两个 URL 地址具有相同的协议、主机名、端口号。
同源策略(英文全称 Same origin policy)是浏览器提供的一个安全功能。浏览器的同源策略规定:不允许非同源的 URL 之间进行资源的交互。]
跨域
跨域指的是两个 URL 地址的协议、主机名、端口号三者中有一个或多个不同。出现跨域的根本原因:浏览器的同源策略不允许非同源的 URL 之间进行资源的交互。
跨域配置解决方案
突破浏览器跨域限制有两种方案:JSONP 和 CORS 。
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 请求!