• 跨域问题


    1.先说下什么是跨域

    简单地理解就是因为JavaScript同源策略的限制,a.com 域名下的js无法操作b.com或是c.a.com域名下的对象。

    那么什么是同源策略呢?

    JavaScript只能访问与包含它的文档在同一域下的内容。

    所谓同源是指,域名,协议,端口相同。

    只有在同一域名下才可以访问,不同端口,不同协议都不可以访问

    2.解决方案

    (1).jsonp

    通常来说,带有src属性的标签都可以实现跨域

    将要请求的url放到script动态加载,服务器返回执行字符串,但是这个字符串是在window全局作用域下执行的,你需要把他

    返回到你的代码的作用域内,这里就需要临时创建一个全局的回调函数,并把到传到后台,最后再整合实际要请求的数组,返回给前端,

    让浏览器直接调用,用回调的形式回到你的原代码流程中。

    <script type="text/javascript>
    var jsonp = function(data){
        alert(data);
    }
    
    </>
    <script type="text/javascript" src="http://xxx.com/jsonp.js?callback=jsonp"></script>
    

      

    优点是兼容性好,简单易用,支持浏览器与服务器双向通信。缺点是只支持GET请求。

    (2)CORS

    服务器端对于CORS的支持,主要就是通过设置Access-Control-Allow-Origin来进行的。如果浏览器检测到相应的设置,就可以允许Ajax进行跨域的访问。

    (3)web worker

    1.通过 worker = new Worker( url ) 加载一个JS文件来创建一个worker,同时返回一个worker实例。
    
    2.通过worker.postMessage( data ) 方法来向worker发送数据。
    
    3.绑定worker.onmessage方法来接收worker发送过来的数据。
    
    4.可以使用 worker.terminate() 来终止一个worker的执行。

    (4)window.name
    参考这篇文章http://www.planabc.net/2008/09/01/window_name_transport/

  • 相关阅读:
    集合类
    对象数组的练习已经对象数组的内存图
    String字符串的遍历
    About me-关于我
    工作两周年总结
    hackrf搭配gr-mixalot唤醒沉睡多年的BP机
    电视机为什么会收到邻居游戏机画面?
    分析无线遥控器信号并制作 Hack 硬件进行攻击
    使用 Arduino 和 RC Switch 逆向遥控器
    解码无线遥控器信号的 N 种方法
  • 原文地址:https://www.cnblogs.com/yanwei-sun/p/5286759.html
Copyright © 2020-2023  润新知