跨域

作者: 饥人谷_水生 | 来源:发表于2018-07-19 23:19 被阅读0次

    1. 同源策略是什么?

    浏览器出于安全方面的考虑,只允许与本域下的接口进行交互。不同源的客户端脚本在没有明确的授权的情况下,不能读写对方的资源,此为同源策略。
    本域指的是以下三个方面

    2. 为何跨域?

    因为浏览器的同源策略阻止不同域的接口数据交互,实现安全,但在实际运用中,有时需要不同域的资源进行交互处理,从而引发跨域解决数据交互问题。

    3. 跨域的实现方式有几种?

    3.1 JSONP

    html中的script标签可以引入其他域下的js,基于此特性,我们可以实现跨域的访问接口。

    • 在html文件中写好回调函数callback
    • 在后台服务器中写好返回的回调函数名+参数
    • html文件收到后台服务器返回内容按js执行,执行带参数的callback。返回的带参callback从而实现了跨域数据交互。

    详细实现见github中json文件夹

    3.2 CORS

    CORS是支持AJAX的“正规军”,在浏览器同源策略的同时,当发出不同源的请求时,会给发送的请求会送时,加个响应头Access-Control-Allow-Origin,凡是请求端地址在Access-Control-Allow-Origin的值内的,则可以解析响应,实现跨域数据交互。


    Access-Control-Allow-Origin

    详细实现见github中cors文件夹

    3.3 降域

    降域顾名思义,就是把域名类似的两个html的domain设为同一个,例如:

    • a.jrg.com
    • b.jrg.com
      均在页面也添加下行代码,从而实现降域,可以访问iframe内的跨域的数据,进行交互。
      document.domain = 'jrg.com'
      详细实现见github中降域文件夹

    3.4 postMessage

    postMessage机制不同于上边几种,它是通过在一端发送message消息,另一端监听message消息,从而获得数据交互。通过监听message和发送message,实现跨域数据交互。
    详细实现见github中postMessage文件夹

    相关文章

      网友评论

          本文标题:跨域

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