跨域

JSONP

jsonp是一种跨域通信的手段,它的原理其实很简单:

  1. 首先是利用script标签的src属性来实现跨域
  2. 通过将前端方法作为参数传递到服务器端,然后由服务器端注入参数之后再返回,实现服务器端向客户端通信
  3. 由于使用script标签的src属性,因此只支持get方法

项目参考

CORS

CORS是一个W3C标准,全称是"跨域资源共享"(Cross-origin resource sharing)
它允许浏览器向跨源服务器,发出XMLHttpRequest请求,从而克服了AJAX只能同源使用的限制, 支持现代浏览器,IE支持10以上.

实现方式:
当你使用 XMLHttpRequest 发送请求时,浏览器发现该请求不符合同源策略,会给该请求加一个请求头:Origin,后台进行一系列处理,如果确定接受请求则在返回结果中加入一个响应头:Access-Control-Allow-Origin; 浏览器判断该相应头中是否包含 Origin 的值,如果有则浏览器会处理响应,我们就可以拿到响应数据,如果不包含浏览器直接驳回,这时我们无法拿到响应数据。所以 CORS 的表象是让你觉得它与同源的 ajax 请求没啥区别,代码完全一样。

项目参考

降域

当两个页面不同域,但是它们的父域之上都相同(端口),那么可以使用降域的方法来实现跨域。

对于主域相同而子域不同的情况下,可以通过设置 document.domain 的办法来解决

项目参考

postMessage

HTML5为了解决这个问题,引入了一个全新的API:跨文档通信 API(Cross-document messaging)。

这个API为window对象新增了一个window.postMessage方法,允许跨窗口通信,不论这两个窗口是否同源。

举例来说,父窗口http://a.jrg.com向子窗口http://b.jrg.com发消息,调用postMessage方法可以了。

postMessage方法的第一个参数是具体的信息内容,第二个参数是接收消息的窗口的源(origin),即"协议 + 域名 + 端口"。也可以设为*,表示不限制域名,向所有窗口发送

项目参考

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 题目1.什么是同源策略? 同源策略(Same origin Policy): 浏览器出于安全方面的考虑,只允许与本...
    FLYSASA阅读 1,947评论 0 6
  • 1. 什么是跨域 跨域,是指浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对JavaScri...
    cbw100阅读 6,502评论 2 86
  • 欢迎关注微信公众号:全栈工厂 本文主要参考跨域资源共享 CORS 详解[http://www.ruanyifeng...
    liqingbiubiu阅读 2,099评论 0 3
  • 要我说不爱你 要我像秋风掠过带走一片落叶的寂寞 要我说不爱你 要我饮着清晨薄雾和的酒唱一曲快乐 要我说不爱你 要我...
    f66e303112ae阅读 211评论 2 4
  • 一.文档流的概念指什么?有哪种方式可以让元素脱离文档流? 1.窗体自上而下分成一行行, 并在每行中按从左至右的顺序...
    小周师傅阅读 459评论 1 0

友情链接更多精彩内容