<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>RIA Args</title>
	<atom:link href="http://args.cn/feed/" rel="self" type="application/rss+xml" />
	<link>http://args.cn</link>
	<description>my blog,but share with you~</description>
	<lastBuildDate>Fri, 26 Aug 2011 09:19:12 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.3</generator>
		<item>
		<title>AS3的Base64编码和解码</title>
		<link>http://args.cn/post/2011/08/as3%e7%9a%84base64%e7%bc%96%e7%a0%81%e5%92%8c%e8%a7%a3%e7%a0%81/</link>
		<comments>http://args.cn/post/2011/08/as3%e7%9a%84base64%e7%bc%96%e7%a0%81%e5%92%8c%e8%a7%a3%e7%a0%81/#comments</comments>
		<pubDate>Fri, 26 Aug 2011 09:19:12 +0000</pubDate>
		<dc:creator>wpm</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Articles]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[base64]]></category>

		<guid isPermaLink="false">http://args.cn/?p=30887</guid>
		<description><![CDATA[as3的Base64编解码]]></description>
		<wfw:commentRss>http://args.cn/post/2011/08/as3%e7%9a%84base64%e7%bc%96%e7%a0%81%e5%92%8c%e8%a7%a3%e7%a0%81/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>unload</title>
		<link>http://args.cn/post/2011/08/unload/</link>
		<comments>http://args.cn/post/2011/08/unload/#comments</comments>
		<pubDate>Wed, 24 Aug 2011 09:29:17 +0000</pubDate>
		<dc:creator>wpm</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[flash player9]]></category>
		<category><![CDATA[unload]]></category>

		<guid isPermaLink="false">http://args.cn/?p=30878</guid>
		<description><![CDATA[http://gskinner.com/blog/archives/2008/04/failure_to_unlo.html]]></description>
		<wfw:commentRss>http://args.cn/post/2011/08/unload/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Flash Debug Player引起Firefox 3.6崩溃的解决办法</title>
		<link>http://args.cn/post/2011/07/flash-debug-player%e5%bc%95%e8%b5%b7firefox-3-6-6%e5%b4%a9%e6%ba%83%e7%9a%84%e8%a7%a3%e5%86%b3%e5%8a%9e%e6%b3%95/</link>
		<comments>http://args.cn/post/2011/07/flash-debug-player%e5%bc%95%e8%b5%b7firefox-3-6-6%e5%b4%a9%e6%ba%83%e7%9a%84%e8%a7%a3%e5%86%b3%e5%8a%9e%e6%b3%95/#comments</comments>
		<pubDate>Thu, 28 Jul 2011 06:38:58 +0000</pubDate>
		<dc:creator>wpm</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[debug]]></category>
		<category><![CDATA[FireFox]]></category>

		<guid isPermaLink="false">http://args.cn/?p=30873</guid>
		<description><![CDATA[调试Flash的时候，只要有异常，弹出异常窗口以后，Firefox就不响应了，过一会会显示Flash插件崩溃的信息，只能通过任务管理器强行关闭Firefox。 解决方案如下： 1. Firefox地址栏输入about:config，打开高级设置，如果有警告直接忽略 2. 在Filter里搜索dom.ipc.plugins 3. 双击dom.ipc.plugins.enabled.npswf32.dll设为false 4. 也可以把dom.ipc.plugins.timeoutSecs设为-1来禁用插件崩溃的timeout 5. 重启Firefox]]></description>
		<wfw:commentRss>http://args.cn/post/2011/07/flash-debug-player%e5%bc%95%e8%b5%b7firefox-3-6-6%e5%b4%a9%e6%ba%83%e7%9a%84%e8%a7%a3%e5%86%b3%e5%8a%9e%e6%b3%95/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>谷歌账户无法登陆，网络连接失败的解决方法</title>
		<link>http://args.cn/post/2011/06/%e8%b0%b7%e6%ad%8c%e8%b4%a6%e6%88%b7%e6%97%a0%e6%b3%95%e7%99%bb%e9%99%86%ef%bc%8c%e7%bd%91%e7%bb%9c%e8%bf%9e%e6%8e%a5%e5%a4%b1%e8%b4%a5%e7%9a%84%e8%a7%a3%e5%86%b3%e6%96%b9%e6%b3%95/</link>
		<comments>http://args.cn/post/2011/06/%e8%b0%b7%e6%ad%8c%e8%b4%a6%e6%88%b7%e6%97%a0%e6%b3%95%e7%99%bb%e9%99%86%ef%bc%8c%e7%bd%91%e7%bb%9c%e8%bf%9e%e6%8e%a5%e5%a4%b1%e8%b4%a5%e7%9a%84%e8%a7%a3%e5%86%b3%e6%96%b9%e6%b3%95/#comments</comments>
		<pubDate>Tue, 28 Jun 2011 07:57:45 +0000</pubDate>
		<dc:creator>wpm</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[g7]]></category>
		<category><![CDATA[手机登陆]]></category>
		<category><![CDATA[谷歌账户登陆]]></category>

		<guid isPermaLink="false">http://args.cn/?p=30875</guid>
		<description><![CDATA[谷歌账户无法登陆，网络连接失败的解决方法]]></description>
		<wfw:commentRss>http://args.cn/post/2011/06/%e8%b0%b7%e6%ad%8c%e8%b4%a6%e6%88%b7%e6%97%a0%e6%b3%95%e7%99%bb%e9%99%86%ef%bc%8c%e7%bd%91%e7%bb%9c%e8%bf%9e%e6%8e%a5%e5%a4%b1%e8%b4%a5%e7%9a%84%e8%a7%a3%e5%86%b3%e6%96%b9%e6%b3%95/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>win7下不能正常卸载air的解决方法</title>
		<link>http://args.cn/post/2011/06/win7%e4%b8%8b%e4%b8%8d%e8%83%bd%e6%ad%a3%e5%b8%b8%e5%8d%b8%e8%bd%bdair%e7%9a%84%e8%a7%a3%e5%86%b3%e6%96%b9%e6%b3%95/</link>
		<comments>http://args.cn/post/2011/06/win7%e4%b8%8b%e4%b8%8d%e8%83%bd%e6%ad%a3%e5%b8%b8%e5%8d%b8%e8%bd%bdair%e7%9a%84%e8%a7%a3%e5%86%b3%e6%96%b9%e6%b3%95/#comments</comments>
		<pubDate>Mon, 27 Jun 2011 08:16:18 +0000</pubDate>
		<dc:creator>wpm</dc:creator>
				<category><![CDATA[AIR]]></category>
		<category><![CDATA[Articles]]></category>
		<category><![CDATA[adobe air]]></category>
		<category><![CDATA[air 卸载]]></category>
		<category><![CDATA[Flash]]></category>

		<guid isPermaLink="false">http://args.cn/?p=30536</guid>
		<description><![CDATA[以前在win7下装了个air，后来不知咋整的，怎么也卸载不了，更新也更新不了，没辙，只好想了个暴力卸载的招。 1.找到其安装目录：C:\Program Files\Common Files\Adobe AIR 删除整个文档，如果你怕有问题，可以先备份下。 如果删除时提示被其他程序占用，可以使用附件->系统工具->资源监视器，在CPU选项卡的关联句柄中搜索adobe air，就可以找到是哪个进程占用了，然后右键结束。 2.删除所有adobe air相关的注册表信息，如果怕删错，可以先备份一下注册表。 3.安装新的adobe air程序即可。]]></description>
		<wfw:commentRss>http://args.cn/post/2011/06/win7%e4%b8%8b%e4%b8%8d%e8%83%bd%e6%ad%a3%e5%b8%b8%e5%8d%b8%e8%bd%bdair%e7%9a%84%e8%a7%a3%e5%86%b3%e6%96%b9%e6%b3%95/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>FLASHDEVELOP配置(转)</title>
		<link>http://args.cn/post/2011/03/flashdevelop%e9%85%8d%e7%bd%ae/</link>
		<comments>http://args.cn/post/2011/03/flashdevelop%e9%85%8d%e7%bd%ae/#comments</comments>
		<pubDate>Tue, 29 Mar 2011 06:33:56 +0000</pubDate>
		<dc:creator>wpm</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Articles]]></category>
		<category><![CDATA[DevelopTools]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Tutorials]]></category>

		<guid isPermaLink="false">http://args.cn/?p=30623</guid>
		<description><![CDATA[FLASHDEVELOP配置，常用的一些配置方法及参数。]]></description>
		<wfw:commentRss>http://args.cn/post/2011/03/flashdevelop%e9%85%8d%e7%bd%ae/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Flash XMLSocket 通信问题总结(转)</title>
		<link>http://args.cn/post/2011/03/flash-xmlsocket-%e9%80%9a%e4%bf%a1%e9%97%ae%e9%a2%98%e6%80%bb%e7%bb%93%e8%bd%ac/</link>
		<comments>http://args.cn/post/2011/03/flash-xmlsocket-%e9%80%9a%e4%bf%a1%e9%97%ae%e9%a2%98%e6%80%bb%e7%bb%93%e8%bd%ac/#comments</comments>
		<pubDate>Mon, 28 Mar 2011 07:25:00 +0000</pubDate>
		<dc:creator>wpm</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Articles]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Tutorials]]></category>

		<guid isPermaLink="false">http://args.cn/?p=30579</guid>
		<description><![CDATA[Flash XMLSocket 通信问题总结 1、前言 本文以标准两层 C/S 架构为例，对 XMLSocket 通信编程作一沉痛总结。 从开始到调试正常耗掉了我几乎一周的时间，故为沉痛！尚东！！真是太尚东了！！！ 　　为方便描述，把 Flash Player 称作客户端（Client），包括独立的 Player 和嵌入浏览器的 Player。 2、用途 XMLSocket 类提供以 TCP/IP 方式进行程序间通讯的功能。 3、开发基本流程 流程无所谓，先做服务端也好，先做客户端也罢，都不可能把一边做完再做另一边，总之是要同步进行，除非服务端已经存在。 4、客户端开发 XMLSocket 类使用比较简单，基本上就是几个步骤： 　　1) 创建 XMLSocket 类的实例。 2) 写好需要响应的事件代码，事件很少，如下： onConnect: Socket 成功连接后触发，传入一个参数，指定连接状态 onClose: 服务器端断开 Socket 后触发 onData: 收到服务端数据，或传输错误时触发，传入一个参数，为 undefined 时表示传输错误，否则为收到的数据 onXML: 收到服务端 XML 内容，或传输错误时触发，参数同 onData 　　　　典型的代码片段如下： &#8230; var g_Socket = new [...]]]></description>
		<wfw:commentRss>http://args.cn/post/2011/03/flash-xmlsocket-%e9%80%9a%e4%bf%a1%e9%97%ae%e9%a2%98%e6%80%bb%e7%bb%93%e8%bd%ac/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>error while loading initial content的解决方案(转)</title>
		<link>http://args.cn/post/2011/03/error-while-loading-initial-content%e7%9a%84%e8%a7%a3%e5%86%b3%e6%96%b9%e6%a1%88%e8%bd%ac/</link>
		<comments>http://args.cn/post/2011/03/error-while-loading-initial-content%e7%9a%84%e8%a7%a3%e5%86%b3%e6%96%b9%e6%a1%88%e8%bd%ac/#comments</comments>
		<pubDate>Mon, 28 Mar 2011 03:14:57 +0000</pubDate>
		<dc:creator>wpm</dc:creator>
				<category><![CDATA[AIR]]></category>
		<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Tutorials]]></category>

		<guid isPermaLink="false">http://args.cn/?p=30537</guid>
		<description><![CDATA[现在国内的flash builder4能学习的源码很少.E文是相对一部分人来说的.所以还有不少人在使用FLEX3的源码来学习研究.有人会在开始用flash builder4时碰到以下这个问题.其实解决方法跟以前FLEX3一样. 举例: 导入一个完整的Flex3源码进Flash Builder4里,准备调试看效果.其中出现如下窗口 &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211; Process terminated without establishing connection to debugger. Command: &#8220;C:\Program Files\Adobe\Flex Builder 3\sdks\3.2.0\bin\adl.exe&#8221; C:\adobeFlexTraining\flex3test\search\bin-debug\downloader-app.xml C:\adobeFlexTraining\flex3test\search\bin-debug Output from command: error while loading initial content &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;- 解决方法: 打开 downloader-app.xml 配置文件 将Application 修改为下面的一行, 重新编译保存. 对应版本 flex sdk 3.0.0的改成 1.0 flex sdk 3.2 的改成 1.5 flex sdk 4.0 的改成 1.5.3 以后的版本也是同样方法. 出自:http://perusal2008.blogbus.com/logs/49397110.html]]></description>
		<wfw:commentRss>http://args.cn/post/2011/03/error-while-loading-initial-content%e7%9a%84%e8%a7%a3%e5%86%b3%e6%96%b9%e6%a1%88%e8%bd%ac/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>AS3——navigateToURL(转）</title>
		<link>http://args.cn/post/2011/03/as3%e2%80%94%e2%80%94navigatetourl%e8%bd%ac%ef%bc%89/</link>
		<comments>http://args.cn/post/2011/03/as3%e2%80%94%e2%80%94navigatetourl%e8%bd%ac%ef%bc%89/#comments</comments>
		<pubDate>Mon, 07 Mar 2011 13:25:50 +0000</pubDate>
		<dc:creator>wpm</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Flash]]></category>

		<guid isPermaLink="false">http://args.cn/?p=30253</guid>
		<description><![CDATA[navigateToURL() 可以用来打开一个新的浏览器窗口，也可以用来flex和js之间的通信，比如打开一个新窗口： var url:URLRequest = new URLRequest("http://www.eb163.com"); navigateToURL(url, "_blank"); 这个函数也可以用来执行js，例如： var url:URLRequest = new URLRequest(“javascript:window.close()”); 或者： var urlLURLRequest = new URLRequest(“javascript:myFun(para1…paran)”) myFun()函数是html页面的script部分定义的，函数参数一定要有引号！ navigateToURL(url, "_self"); 也可以用来发送email： var urlURLRequest = new URLRequest("mailto:55555@163.com"); navigateToURL(url, "_blank"); 阻止navigateToURL弹窗的解决方法： package FlashCode.utils{ import flash.display.Sprite; import flash.net.URLRequest; import flash.net.navigateToURL; import flash.external.ExternalInterface; public class openWindow { public function openWindow(url:String, window:String="_blank", features:String=""){ var WINDOW_OPEN_FUNCTION:String = "window.open"; var myURL:URLRequest = new URLRequest(url); var browserName:String = getBrowserName(); if(getBrowserName() == "Firefox"){ ExternalInterface.call(WINDOW_OPEN_FUNCTION, url, window, features); } //If IE, else if(browserName == "IE"){ ExternalInterface.call(WINDOW_OPEN_FUNCTION, url, window, features); //ExternalInterface.call("function setWMWindow() {window.open(&#38;apos;" + url + "&#38;apos;);}"); } //If Safari else if(browserName == "Safari"){ navigateToURL(myURL, window); } //If Opera else if(browserName == "Opera"){ navigateToURL(myURL, window); } else { navigateToURL(myURL, window); } /*Alternate methodology... var popSuccess:Boolean = ExternalInterface.call(WINDOW_OPEN_FUNCTION, url, window, features); if(popSuccess == false){ navigateToURL(myURL, window); }*/ } private function getBrowserName():String{ var browser:String; //Uses external interface to reach out to browser and grab browser useragent info. var browserAgent:String = ExternalInterface.call("function getBrowser(){return navigator.userAgent;}"); //  Debug.text += "Browser Info: [" + browserAgent + "]"; //Determines brand of browser using a find index. If not found indexOf returns (-1). if(browserAgent != null &#38;&#38; browserAgent.indexOf("Firefox") &#62;= 0) { [...]]]></description>
		<wfw:commentRss>http://args.cn/post/2011/03/as3%e2%80%94%e2%80%94navigatetourl%e8%bd%ac%ef%bc%89/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>跨域资源共享的10种方式(转)</title>
		<link>http://args.cn/post/2011/02/%e8%b7%a8%e5%9f%9f%e8%b5%84%e6%ba%90%e5%85%b1%e4%ba%ab%e7%9a%8410%e7%a7%8d%e6%96%b9%e5%bc%8f%e8%bd%ac/</link>
		<comments>http://args.cn/post/2011/02/%e8%b7%a8%e5%9f%9f%e8%b5%84%e6%ba%90%e5%85%b1%e4%ba%ab%e7%9a%8410%e7%a7%8d%e6%96%b9%e5%bc%8f%e8%bd%ac/#comments</comments>
		<pubDate>Mon, 14 Feb 2011 10:28:58 +0000</pubDate>
		<dc:creator>wpm</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Articles]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[跨域 共享]]></category>

		<guid isPermaLink="false">http://args.cn/?p=27229</guid>
		<description><![CDATA[http://www.woiweb.net/10-cross-domain-methods.html 在客户端编程语言中，如javascript和ActionScript，同源策略是一个很重要的安全理念，它在保证数据的安全性方面有着重要的意义。同 源策略规定跨域之间的脚本是隔离的，一个域的脚本不能访问和操作另外一个域的绝大部分属性和方法。那么什么叫相同域，什么叫不同的域呢？ 同源策略 在客户端编程语言中，如javascript和ActionScript，同源策略是一个很重要的安全理念，它在保证数据的安全性方面有着重要的意义。同源策略规定跨域之间的脚本是隔离的，一个域的脚本不能访问和操作另外一个域的绝大部分属性和方法。那么什么叫相同域，什么叫不同的域呢？当两个域具有相同的协议(如http), 相同的端口(如80)，相同的host（如www.example.org)，那么我们就可以认为它们是相同的域。比如http://www.example.org/index.html和http://www.example.org/sub/index.html是同域，而http://www.example.org, https://www.example.org, http://www.example.org:8080, http://sub.example.org中的任何两个都将构成跨域。同源策略还应该对一些特殊情况做处理，比如限制file协议下脚本的访问权限。本地的html文件在浏览器中是通过file协议打开的，如果脚本能通过file协议访问到硬盘上其它任意文件，就会出现安全隐患，目前IE8还有这样的隐患。 受到同源策略的影响，跨域资源共享就会受到制约。但是随着人们的实践和浏览器的进步，目前在跨域请求的技巧上，有很多宝贵经验的沉淀和积累。这里我把跨域资源共享分成两种，一种是单向的数据请求，还有一种是双向的消息通信。接下来我将罗列出常见的一些跨域方式，以下跨域实例的源代码可以从这里获得。 单向跨域 JSONP JSONP (JSON with Padding)是一个简单高效的跨域方式，HTML中的script标签可以加载并执行其他域的JavaScript，于是我们可以通过script标记来动态加载其他域的资源。例如我要从域A的页面pageA加载域B的数据，那么在域B的页面pageB中我以JavaScript的形式声明pageA需要的数据，然后在pageA中用script标签把pageB加载进来，那么pageB中的脚本就会得以执行。JSONP在此基础上加入了回调函数，pageB加载完之后会执行pageA中定义的函数，所需要的数据会以参数的形式传递给该函数。JSONP易于实现，但是也会存在一些安全隐患，如果第三方的脚本随意地执行，那么它就可以篡改页面内容，截获敏感数据。但是在受信任的双方传递数据，JSONP是非常合适的选择。 flash URLLoader flash有自己的一套安全策略，服务器可以通过crossdomain.xml文件来声明能被哪些域的SWF文件访问，SWF也可以通过API来确定自身能被哪些域的SWF加载。当跨域访问资源时，例如从域www.a.com请求域www.b.com上的数据，我们可以借助Flash来发送HTTP请求。首先，修改域www.b.com上的crossdomain.xml(一般存放在根目录，如果没有需要手动创建) ，把www.a.com加入到白名单。其次，通过Flash URLLoader发送HTTP请求，最后，通过Flash API把响应结果传递给JavaScript。Flash URLLoader是一种很普遍的跨域解决方案，不过需要支持iOS的话，这个方案就无能为力了。 Access Control Access Control是比较超越的跨域方式，目前只在很少的浏览器中得以支持，这些浏览器可以发送一个跨域的HTTP请求（Firefox, Google Chrome等通过XMLHTTPRequest实现，IE8下通过XDomainRequest实现），请求的响应必须包含一个Access-Control-Allow-Origin的HTTP响应头，该响应头声明了请求域的可访问权限。例如www.a.com对www.b.com下的asset.php发送了一个跨域的HTTP请求，那么asset.php必须加入如下的响应头： header(&#8220;Access-Control-Allow-Origin: http://www.a.com&#8221;); window.name window对象的name属性是一个很特别的属性，当该window的location变化，然后重新加载，它的name属性可以依然保持不变。那么我们可以在页面A中用iframe加载其他域的页面B，而页面B中用JavaScript把需要传递的数据赋值给window.name，iframe加载完成之后，页面A修改iframe的地址，将其变成同域的一个地址，然后就可以读出window.name的值了。这个方式非常适合单向的数据请求，而且协议简单、安全。不会像JSONP那样不做限制地执行外部脚本。 server proxy 在数据提供方没有提供对JSONP协议或者window.name协议的支持，也没有对其它域开放访问权限时，我们可以通过server proxy的方式来抓取数据。例如当www.a.com域下的页面需要请求www.b.com下的资源文件asset.txt时，直接发送一个指向www.b.com/asset.txt的Ajax请求肯定是会被浏览器阻止。这时，我们在www.a.com下配一个代理，然后把Ajax请求绑定到这个代理路径下，例如www.a.com/proxy/, 然后这个代理发送HTTP请求访问www.b.com下的asset.txt，跨域的HTTP请求是在服务器端进行的，客户端并没有产生跨域的Ajax请求。这个跨域方式不需要和目标资源签订协议，带有侵略性，另外需要注意的是实践中应该对这个代理实施一定程度的保护，比如限制他人使用或者使用频率。 双向跨域 document.domain 通过修改document的domain属性，我们可以在域和子域或者不同的子域之间通信。同域策略认为域和子域隶属于不同的域，比如www.a.com和sub.a.com是不同的域，这时，我们无法在www.a.com下的页面中调用sub.a.com中定义的JavaScript方法。但是当我们把它们document的domain属性都修改为a.com，浏览器就会认为它们处于同一个域下，那么我们就可以互相调用对方的method来通信了。 FIM – Fragment Identitier Messaging 不同的域之间，JavaScript只能做很有限的访问和操作，其实我们利用这些有限的访问权限就可以达到跨域通信的目的了。FIM (Fragment Identitier Messaging)就是在这个大前提下被发明的。父窗口可以对iframe进行URL读写，iframe也可以读写父窗口的URL，URL有一部分被称为frag，就是#号及其后面的字符，它一般用于浏览器锚点定位，Server端并不关心这部分，应该说HTTP请求过程中不会携带frag，所以这部分的修改不会产生HTTP请求，但是会产生浏览器历史记录。FIM的原理就是改变URL的frag部分来进行双向通信。每个window通过改变其他window的location来发送消息，并通过监听自己的URL的变化来接收消息。这个方式的通信会造成一些不必要的浏览器历史记录，而且有些浏览器不支持onhashchange事件，需要轮询来获知URL的改变，最后，URL在浏览器下有长度限制，这个制约了每次传送的数据量。 Flash LocalConnection 页面上的双向通信也可以通过Flash来解决，Flash API中有LocalConnection这个类，该类允许两个SWF之间通过进程通信，这时SWF可以播放在独立的Flash Player或者AIR中，也可以嵌在HTML页面或者是PDF中。遵循这个通信原则，我们可以在不同域的HTML页面各自嵌套一个SWF来达到相互传递数据的目的了。SWF通过LocalConnection交换数据是很快的，但是每次的数据量有40kb的大小限制。用这种方式来跨域通信过于复杂，而且需要了2个SWF文件，实用性不强。 [...]]]></description>
		<wfw:commentRss>http://args.cn/post/2011/02/%e8%b7%a8%e5%9f%9f%e8%b5%84%e6%ba%90%e5%85%b1%e4%ba%ab%e7%9a%8410%e7%a7%8d%e6%96%b9%e5%bc%8f%e8%bd%ac/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic page generated in 0.086 seconds. -->
<!-- Cached page generated by WP-Super-Cache on 2012-02-06 18:17:28 -->

