美文网首页
跨域通信

跨域通信

作者: 雨泽丶 | 来源:发表于2019-04-28 11:36 被阅读0次

跨域通信常用的几种方式

1、JSONP

2、WebSocket

3、CORS

4、Hash

5、postMessage

1、JSONP

  • JSONP的原理是什么?怎么实现的?
    JSONP的原理:通过<script>标签的异步加载来实现的。可以通过<script>标签的src,里面放url,通过script标签引入的js是不受同源策略的限制,得和后端订好那个字段是回调函数

2. CORS

  • CORS 可以理解成是既可以同步、也可以异步*的Ajax。
    fetch 是一个比较新的API,用来实现CORS通信
 // url(必选),options(可选)
      fetch('/some/url/', {
          method: 'get',
      }).then(function (response) {  //类似于 ES6中的promise

      }).catch(function (err) {
        // 出错了,等价于 then 的第二个参数,但这样更好用更直观
      });
  • “CORS为什么支持跨域的通信?”
    答案:跨域时,浏览器会拦截Ajax请求,并在http头中加Origin。

3.postMessage

场景:窗口 A (http:A.com)向跨域的窗口 B (http:B.com)发送信息。步骤如下。
(1)在A窗口中操作如下:向B窗口发送数据:

    // 窗口A(http:A.com)向跨域的窗口B(http:B.com)发送信息
    Bwindow.postMessage('data', 'http://B.com'); //这里强调的是B窗口里的window对象

(2)在B窗口中操作如下:

    // 在窗口B中监听 message 事件
    Awindow.addEventListener('message', function (event) {   //这里强调的是A窗口里的window对象
        console.log(event.origin);  //获取 :url。这里指:http://A.com
        console.log(event.source);  //获取:A window对象
        console.log(event.data);    //获取传过来的数据
    }, false);

4. WebSocket

首先Websocket是基于HTTP协议的,或者说借用了HTTP的协议来完成一部分与后台的握手。

//创建WebSocket的对象。参数可以是 ws 或 wss,后者表示加密。
var ws = new WebSocket("ws://localhost:9998/echo");

// 建立 webSocket 连接成功触发事件
ws.onopen = function () {
  // 使用 send() 方法发送数据
  ws.send("发送数据");
  alert("数据发送中...");
};

// 接收服务端数据时触发事件
ws.onmessage = function (evt) {
  var received_msg = evt.data;
  alert("数据已接收...");
  ws.close()
};

// 断开 webSocket 连接成功触发事件
ws.onclose = function () {
  alert("连接已关闭...");
};
  • 事件处理程序 描述
    ws .onopen 连接建立时触发
    ws .onmessage 客户端接收服务端数据时触发
    ws .onerror 通信发生错误时触发
    ws .onclose 连接关闭时触发
  • 方法 描述
    ws .send() 使用连接发送数据
    ws .close() 关闭连接,

相关文章

  • FE-interview-Q&A

    浏览器标签页通信 WebSocket (可跨域) postMessage(可跨域)iframe 父子通信np = ...

  • localStorage 如何跨域通信?

    cookie 跨域主要记住一个单词,如下: 看看 localStorage 如何跨域通信? 因为要跨域所以我们需要...

  • postMessage 相关漏洞分析与分享

    前言 postMessage API 是在 HTML5 中引入的通信方法,可以在标签中实现跨域通信。 跨域嘛,大家...

  • 跨域通信

    一、跨域and同源政策 1.跨域,指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对ja...

  • 跨域通信

    阮一峰同源策略浏览器处于安全考虑实行了同源策略机制。同源指的是 协议相同 域名相同 端口相同 举例来说,http:...

  • 跨域通信

    跨域通信常用的几种方式 1、JSONP 2、WebSocket 3、CORS 4、Hash 5、postMessa...

  • layui下,iframe父子窗口的通信

    iframe通信/跨域通信。http://fly.layui.com/jie/19251/ 待整理

  • 前端基础面试题

    1. 跨域问题 同源:两个文档需满足:协议相同,域名相同,端口相同。跨域通信 :js进行DOM操作、通信时如果目标...

  • 使用postMessage进行跨域通信

    跨域通信是前端开发中经常会遇到的情景,跨域通信有多种多样的方式,今天就详细说一下使用postMessage这样方式...

  • 2021-01-28面试题

    浏览器内多个标签页之间的通信方式有哪些 ? websocket 可跨域 postMessage 可跨域 work...

网友评论

      本文标题:跨域通信

      本文链接:https://www.haomeiwen.com/subject/rpfcnqtx.html