美文网首页程序员
跨域解决的五种方式

跨域解决的五种方式

作者: 爱看小说的叶子 | 来源:发表于2020-06-02 14:27 被阅读0次

    具体参考网址:https://www.cnblogs.com/qiujianmei/p/11649905.html

    1:JSONP 

    原理 :利用script不受同源限制进行请求而不是利用ajax。

    解:(1)通过script跨域的方式带上相关js回调方法和请求参数,给服务器。

    类似于:<script src="https://www.jianshu.com/writer#/notebooks/?callback='getList'&id=11111"></script>

    (2)到时后端回调你js函数方法且传送返回数据  getList({ data:['424','2424234'] })

      (3)  前端页面js:   function getList(data){  // 进行数据的相关赋值 }

    优点:兼容性比较好。 缺点:前后端比较耦合、只能是get请求。

    2:CROS方式。

    概念: 跨域资源共享。

    原理:CROS通信的关键是服务器。只要服务器实现了CORS接口,就可以跨源通信

    分为:简单请求和非简单请求(有一次预捡请求options).

    服务端配置成功:响应头会进行返回Access-Control-Allow-Origin:许可的源。

    请求头:origin: 源。

    注意: cros跨域是不带cookie的,需要服务器端和前端一起相关配置好。

    服务器端:Access-Control-Allow-Credentials: true

    前端的ajax配置:withCredentials =true

    3:websocket 

    原理:不受同源限制,可以跟任何服务器进行数据连接,服务器端可以直接推送数据到客户端。

    // 使用方法创建连接url

    var ws = new  WebSocket("ws://ewwr.ds.aa");

    // 打开,发送数据

    ws.onopen = function (evt){

        ws.send(parms);

    }

    // 得到回调函数的数据,成功的时候

    ws.onmessage = function (evt){

        // evt 得到的数据

    //  进行关闭websocket的连接

    ws.close();

    }

    // 回调报错的话

    ws.onerror = function (err){

        // err的失败消息

    }

    // 判断浏览器是否支持websocket

    if(typeofWebSocket !='undefined') {

    /*supported*/

    }

    4:postMessage. 

    使用场景:一般用于跨窗口、跨域父子窗口这种嵌套iframe。

    主窗口 子窗口

    相关文章

      网友评论

        本文标题:跨域解决的五种方式

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