【强烈推荐】如何解决JQuery类Post方式的跨域问题



在很多应用场景,利用JQ的getJSON解决跨域问题是首选,非常好用,类似代码如下:




1. $.getJSON(" http://跨域的dns/document!searchJSONResult.action?name1="+value1+"&jsoncallback=?",  
2. function(json){  
3. if(json.属性名==值){  
4. // 执行代码
5.             }  
6.         });

$.getJSON(" http://跨域的dns/document!searchJSONResult.action?name1="+value1+"&jsoncallback=?",      function(json){
      if(json.属性名==值){
      // 执行代码
            }
        });

 

但有一个问题,在我解决http://l.faqee.com/应用的时候,起初也是利用这种方式将聊天记录一键发送到用户邮箱中,后来我发觉一旦聊天记录超过2000字节以上时(在我的站点,这种情况是相当普遍的),但利用这种方式执行代码时,就会发现发送到邮箱的聊天数据是不全的,非常郁闷,查了些资料,最终我觉得可以利用Flash+js的方式来完成这个工作,也是前辈们的代码。

引用一段JQ对于解决Post方式跨域问题的申明:

写道

注意,jquey是不支持post方式跨域的.
为什么呢?
虽然采用post +动态生成iframe是可以达到post跨域的目的(有位js牛人就是这样把jquery1.2.5 打patch的),但这样做是一个比较极端的方式,不建议采用.
也可以说get方式的跨域是合法的,post方式从安全角度上,被认为是不合法的, 万不得已还是不要剑走偏锋..

 

附件中的代码很好的解决了这个问题,前提是客户端必须有flash,并且在服务端的根目录下放置crossdomain.xml文件即可,我在我的路过的(http://l.faqee.com/)程序测试过,效果相当好,完全可以用!