• 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的方法不复杂,也能兼容几乎所有的浏览器,是一个很好得跨域请求方法。

  • 相关阅读:
    How to interpret complex C/C++ declarations (ZT)
    The Managed Thread Pool
    How slow is dynamic_cast?
    Type Safety
    sBRDF空间双向反射分布函数完全解析
    近日工作与生活梗概
    简单的环绕散射 Simple Wrap Diffuse From GPU GEMS1
    屈辱史
    难以忽视的细节
    物理学与计算机图形学中的HDR
  • 原文地址:https://www.cnblogs.com/WaTa/p/5536959.html
Copyright © 2020-2023  润新知