论坛首页 Web前端技术论坛

求XmlHttp 跨域的解决方案

浏览 67895 次
该帖已经被评为精华帖
作者 正文
   发表时间:2007-04-28  
18楼的推荐的developerworks的文章十分不错,又造个名词mashup。

服务器做proxy 和 客户端引用其它域js 是两种不同模式。
如dlee所说,后者要求双方有严格的契约,基本定死在json,js上。
前者适合单方面需要抓取数据,内容提供方不必知道。
后者更适合互联网应用中内容提供方主动开放接口,供他人集成。
一个公司开发的多个系统在需要界面集成的情况下后者也适用吧(如果不选用万恶的portal的话)。

那篇文章对功能、安全性、性能和可选方案讲的都很全。
mashup不仅是界面集成方案,而且展现了一种商业(推广)模式的前景和可行性。
这个东西说白了跟AJAX/XHR没多大关系,不过是引用了其它域的js,原理简单的要命:
浏览器对A域页面引用的B域js文件 与 引用A域的js文件 没有任何差别,可以做任何js能做的事,如创建页面元素(img,script,a,xhr),因此在b.js中动态组装数据就能达到界面组装的效果(b.js不一定是静态资源,它可以是一个action,可以接收参数b.js?xxx)。
这是HTML标准,如同A域页面<img src=B域图片>一样。
这默认了一种信任,即A知道它引用的js是做什么的。同时,session在两个域中都能维持。

Google AJAX Feed API中提到的参考资料:

Security for GWT Applications 

http://groups.google.com/group/Google-Web-Toolkit/web/security-for-gwt-applications
0 请登录后投票
   发表时间:2007-04-28  
Mashups可以看作是Ajax最新的发展阶段,不能认为是与Ajax没有关系,它所使用的技术就是Ajax。不要狭义地理解只有使用了XMLHttpRequest的技术才是Ajax。
我在前面说过,Ajax技术主要的价值在于对于数据的集成和展示,就是将来自多个数据源的数据集成在一起,对这些数据加以处理,以最合适和最方便用户使用的形式展示给用户。

前面我说到的集成来自多个网上书店的图书信息算是一个例子。对于Mashups来说,一个例子是:
数据源1:来自Google Maps的地图数据
数据源2:来自另外一个数据库的宾馆信息

我可以建造一个Ajax应用,将来自这两个数据源的数据集成在一起,将某个地区的宾馆标注在该地区的地图上。这种展示形式是用户使用起来最方便的形式。

关于Mashups,出版社今年将会引进这本书:
Pro Web 2.0 Mashups: Remixing Data and Web Services
中文版今年下半年应该就能够看到。
0 请登录后投票
   发表时间:2007-05-13  
liusong1111 写道
18楼的推荐的developerworks的文章十分不错,又造个名词mashup。



  中文
http://www.ibm.com/developerworks/cn/xml/x-securemashups/index.html?S_TACT=105AGX52&S_CMP=techcsdn
0 请登录后投票
   发表时间:2007-08-23  
我得方法基本和上面有一个人说得想法一样,我也是在一个项目中需要访问外网才想到得,
我是JS发送到PHP,再在PHP里用socket来操作远程得数据,当然远程已经写了处理文件来接受请求和返回数据.这样就解决了跨域
0 请登录后投票
   发表时间:2007-08-24  
使用script标签的方式是极端不安全的,只适用于访问你完全可以控制的第三方域,或者完全信任的第三方域的情况。

任何一个商业网站除非有这样的完全控制或者完全信任,都不可能去以script方式访问第三方。因为恶意script代码可以做任何事情,例如盗取cookie中的数据,偷窃用户密码,fishing。。。事实上,就算第三方是可信任的,你还要确保他们的安全能力,否则你还是要承担第三方被黑客攻破进而对你造成破坏的可能。
0 请登录后投票
论坛首页 Web前端技术版

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