返回
CORS与JSONP跨域解决方案比较及代码示例
前端
2023-10-20 12:36:09
拥有一个地址,这个地址可以由协议+IP地址+端口来表示。如果一个请求要从一个地址访问另一个地址,只要请求源与目标同属一个地址,就可以进行,这个地址就是该请求的同域;反之,如果请求源与目标不属于一个地址,那么就不能进行,这就是该请求的跨域。
跨域带来的安全限制的用意是浏览器防止内部的网页(同源)与外部的脚本(非同源)进行通信,在标准浏览环境下,浏览器会阻止内部的网页跨域获取外部网站的资源。
举个很形象的例子:在阿里的网站,可以看到我们了解到的淘宝、天猫、1688、考拉、咸鱼等等熟悉的前端页面,这些都是阿里集团旗下的站点,虽然这些网站内容不同,看起来像是不同的站点,但当你用鼠标放到地址栏去看看,就会发现它们的前端链接都是以 https://.taobao.com 开头,也即是说,这些不同内容的前端网页虽然呈现给用户是不同页面的样子,但在地址上来看,它们都是同一个域名的前端页面,属于一个域,所以它们在前端相互调用就不会出现跨域的问题。
跨域问题与解决方案
跨域问题是指浏览器从一个源(协议、端口、域名)的网页向另一个源的服务器请求资源时产生的安全限制。
CORS(Cross-Origin Resource Sharing)
跨域资源共享(CORS) 是一种 W3C 标准,它允许浏览器向跨源服务器发送请求。CORS 解决了浏览器的同源策略问题,允许 Web 应用从不同的源加载资源。
CORS 预检请求:在发送真正的请求之前,浏览器会向服务器发送一个预检请求,以确定服务器是否允许该请求。
JSONP(JSON with Padding)
JSONP 是一种利用