zoukankan      html  css  js  c++  java
  • JavaScript跨域问题

    通过实现Ajax通信的主要限制,来源于跨域安全策略。默认情况下,XHR对象只能访问与包含它的页面位于同一个域中的资源。这种安全策略可以预防某些恶意行为。但是,实现合理的跨域请求对于开发某些浏览器应用程序也是至关重要的。

    解决方案有:

    1、JSONP:json+padding(内填充)

      原理:动态插入script标签

    通过script标签实现跨域请求,然后在服务端输出JSON数据并执行回调函数,从而解决跨域的数据请求。

    2、CORS(Cross-Origin Resource Sharing, 跨域资源共享)

      服务器端对CORS的支持,主要是通过设置Access-Control-Allow-Origin来进行的。就可以允许Ajax进行跨域的访问。

    3、document.domain + iframe

      通过修改document.domain来跨子域

    主域的document.domain设置为同一个主域,前提条件:这两个域名必须属于同一个基础域名,而且所使用的协议,端口号都要一致,否则无法利用document.domain实现跨域。

    4、window.name

    window对象有一个name属性,该属性有一个特征,即在一个窗口的生命周期内,窗口载入的所有页面都是共享一个window.name的,每个页面对window.name都有读写权限,window.name是持久存在一个窗口载入过的所有页面中

    5、window.postMesssage

      postMessage是HTML5新引进的特性

    6、服务器上设置代理页面

     window.name的方法不复杂,也能兼容几乎所有的浏览器,是一个很好得跨域请求方法。

  • 相关阅读:
    二叉树的镜像(剑指offer-18)
    树的子结构(剑指offer-17)
    合并两个有序链表(剑指offer-16)
    OutOfMemory相关问题(内存溢出异常OOM)
    Java内存区域
    招银网络(一面06.29)
    反转链表(剑指offer-15)
    链表中倒数第k个节点(剑指offer-14)
    调整数组顺序使奇数位于偶数前面(剑指offer-13)
    数值的整数次方(剑指offer-12)
  • 原文地址:https://www.cnblogs.com/WaTa/p/5536959.html
Copyright © 2011-2022 走看看