只是为了确认我认为我从阅读有关在 RIA(FLEX 4 和 ActionScript)中使用 google API 的信息中了解到的内容,例如,由于 google 的 crossdomain.xml 文件,无法直接从 RIA 连接到博客 API,对吧?
因此,如果我想使用他们的 API 来获取一些数据,比如我的邮箱内容或博客上的帖子列表,我必须让一些代码在服务器端运行,而 RIA 只会使用该代码作为 httpservice 从谷歌收集数据?
或者,也许我完全错了?
只是为了确认我认为我从阅读有关在 RIA(FLEX 4 和 ActionScript)中使用 google API 的信息中了解到的内容,例如,由于 google 的 crossdomain.xml 文件,无法直接从 RIA 连接到博客 API,对吧?
因此,如果我想使用他们的 API 来获取一些数据,比如我的邮箱内容或博客上的帖子列表,我必须让一些代码在服务器端运行,而 RIA 只会使用该代码作为 httpservice 从谷歌收集数据?
或者,也许我完全错了?
不,你是对的。当然也有黑魔法的变通方法:
嵌入一个签名的java小程序。如果用户接受证书,它几乎拥有任何权限。绑定一个端口并将其用于 flash 和 java 之间的通信(通过 TCP)。一定要响应策略文件请求,否则flash会自动关闭连接。
获取 DNS 服务器。当用户打开会话时,生成一个子域,例如 sessionID.yourdomain.tl 具有极短的 TTL,映射到您自己的服务器。第一个请求将是一个额外的 SWF 文件,即“代理”。在该请求之后,将子域重新映射到谷歌服务器。因此,flash 播放器被欺骗认为代理和目标 API 具有相同的来源。确保代理允许从容器访问并创建一个小接口,允许您的应用程序通过代理发出 URL 请求。
编辑:
那么第一种方法实际上是可行的:http: //java.sun.com/j2se/1.4.2/docs/guide/plugin/developer_guide/rsa_signing.html。我想在java和flash之间实现一个轻量级的TCP协议更容易,但另一种方法是让flash->java通信基于HTTP。不知道java中有没有处理HTTP请求的库。
至于第二种方法,您可以将BIND 与 DLZ 一起使用。一旦启动并运行它,更改数据库就足够了。
none the less having an intermediary server is the safest solution. although you may wanna consider that some of google's APIs are limited per key per day per IP. you should check this to avoid problems. a few years ago we ran into this while using Google's APIs for geocoding.