跨域通信

2019-04-28  本文已影响0人  雨泽丶

跨域通信常用的几种方式

1、JSONP

2、WebSocket

3、CORS

4、Hash

5、postMessage

1、JSONP

2. CORS

 // url(必选),options(可选)
      fetch('/some/url/', {
          method: 'get',
      }).then(function (response) {  //类似于 ES6中的promise

      }).catch(function (err) {
        // 出错了,等价于 then 的第二个参数,但这样更好用更直观
      });

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("连接已关闭...");
};
上一篇 下一篇

猜你喜欢

热点阅读