论坛首页 Web前端技术论坛

近乎完美的简单 JS 跨域解决方式 --window.name

浏览 31243 次
精华帖 (1) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (11)
作者 正文
   发表时间:2011-02-14  
jsonp才是正经的方案啊,呵呵
0 请登录后投票
   发表时间:2011-02-14   最后修改:2011-02-14
sw1982 写道
jsonp才是正经的方案啊,呵呵

考虑过……
但 jsonp 没法实现浏览器本地的跨域传递数据,应用见《普通 http 网络下数据的安全传输》

>>即时插入 script 元素的方式,会让脚本立即执行,不安全,并且需要与跨域的远端做好约定……
jsonp 较适于对所跨的域的有较大控制权的情况,如果异域的 JS 不按规则办事,则可以破坏本域的 JS 逻辑。而 window.name 不存在这样的情况。
0 请登录后投票
   发表时间:2011-05-11  
我怎么不行,我在执行到 var _getData = function(frame, callback) {
    var data="";
    try
    {
   
    data=frame.contentWindow.name;
   
    }
    catch(e)
    {
    alert(e.message +"," + e.description);
    }
      
        _clear(frame);
        if(callback && typeof callback === 'function') {
            callback(data);
          
        }
    }
catch 到的错误是拒绝访问
0 请登录后投票
   发表时间:2011-08-12  
可以跨浏览器吗,可以跨操作系统吗
window.name是不是只能在xp上用,是不是只能在ie上使?
0 请登录后投票
   发表时间:2011-08-13  
楼主的帖子很有见地。这是对于jsonp的限制的深刻思考的结果。没有真正用jsonp写过代码的人,连问出来的问题都显得可笑。特别是几个“我觉得还是jsonp”的人。
   jsonp能够能够post数据吗?虽然通过url中的query string能够曲线的做,但是长度受到限制。

不过这个解决方案不够大众,总让人心里有点不踏实。我是这样解决的,考虑如下:

1、对于大多数web应用,post次数比起get次数要少许多,所以稍微低效一点可以忍受。
2、符合主流的思想。




描述:
主页面从domaina获得,每次要post数据都post到iframe,这样就解决了跨域问题,那么如何取得结果呢?在服务器一侧是这样处理的,如果是正常的请求,直接返回结果,如果有iframe标记,就将本应返回的结果暂存在服务器。

然后主页面用jsonp去查询这个结果,查询到的话就返回结果,并且将结果从服务器中删除。

这是演示代码:http://trade.fh.gov.cn/oa/Fhtrade.html

这个应用当然非常普通,不普通的地方就是你可以将页面保存下来,(或者你拷贝过去放你你自己的服务器上),系统仍旧会工作。因为后台支撑在我的服务上。
  • 大小: 22.2 KB
0 请登录后投票
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics