分享

flex, swf 不能访问网络/本地资源

 xihayouyi 2013-05-10

flex, swf 不能访问网络/本地资源  

2010-05-26 14:55:30|  分类: notes |字号 订阅

From: http://hi.baidu.com/ls_mcx/blog/item/f37609f3cd2ece1fb07ec5e7.html
1. swf不能访问网络
SecurityError: Error #2028: 仅限于文件系统的 SWF 文件 file:///C|/Documents%20and%20Settings/Administrator/桌面 /176854%5F1%5F0%5F1.swf 不能访问 Internet URL /flvplayer/xml/adtemp.xml。

at flash.net::URLStream/load()
at flash.net::URLLoader/load()
at model::AdTemp/GetXMLData()
at model::AdTemp()
at com::FlvPlayerManager/RenderUI()
at com::FlvPlayerManager()
at com::MiddleTier$/get FlvManagerInstance()
at com::DocumentClass()
解决方法:
flex项目上点右键 -->properties-->ActionscriptCompiler-->Additional compiler arguments
加上 “ -use-network=true ”

设置一下FlashPlayerTrust 配置文件, 使得swf文件被授予完全访问权限
Windows:app data\Macromedia\Flash Player\#Security\FlashPlayerTrust
(例如,C:\Documents and Settings\JohnD\Application Data\Macromedia\Flash Player\#Security\FlashPlayerTrust)
Mac:app data/Macromedia/Flash Player/#Security/FlashPlayerTrust
(例如,/Users/JohnD/Library/Preferences/Macromedia/Flash Player/#Security/FlashPlayerTrust)
Security.sandboxType 属性
SWF 文件的作者可以使用只读的静态 Security.sandboxType 属性来确定 Flash Player 向其分配该 SWF 文件的沙箱类型。Security 类包括表示 Security.sandboxType 属性可能值的常量,如下所示:
Security.REMOTE ― SWF 文件来自 Internet URL,并遵守基于域的沙箱规则。
Security.LOCAL_WITH_FILE ― SWF 文件是本地文件,但尚未受到用户信任,且没有使用网络名称进行发布。此 SWF 文件可以从本地数据源读取数据,但无法与 Internet 进行通信。
Security.LOCAL_WITH_NETWORK ― SWF 文件是本地文件,且尚未受到用户信任,但已使用网络名称进行发布。此 SWF 文件可与 Internet 通信,但不能从本地数据源读取数据。
Security.LOCAL_TRUSTED ― SWF 文件是本地文件,且已使用"设置管理器"或 Flash Player 信任配置文件受到用户信任。此 SWF 文件既可以从本地数据源读取数据,也可以与 Internet 进行通信。

2. flex 不能访问本地资源

SecurityError: Error #2148: SWF 文件 不能访问本地资源 。 只有仅限于文件系统的 SWF 文件和可信的本地 SWF 文件可以访问本地资源。
at flash.net::URLStream/load()
at flash.net::URLLoader/load()
at com.edlt.utils::Settings/loadSettings()[D:

解决方法1:

flex项目上点右键-->properties-->ActionscriptCompiler-->Additional compiler arguments
加上 “ -use-network=false ”      就OK了

swf就无法访问网络资源了,比如socket通讯之类的.

所以最好不要这样用。

解决方法2:

     在网上找了很多关于安全沙箱的文章,大多数都是如何解决网络资源访问的问题,和本文中想要的结果不同。虽然这些文章没有解决本地资源访问的问题。关于这种 问题的解决方案应该是类似的,网络的是在cross什么的文件中增加信任的域名来允许访问,那么本地资源应该也能在某个地方加上本地资源路径来允许访问 的。

    具体如下:    找到%WINDOWS%\system32\Macromed\Flash\FlashPlayerTrust %UserHome%\Application Data\Macromedia\Flash Player\#Security\FlashPlayerTrust, 在这个目录下随便建个文本文件,在文 件里输入需要访问本地资源flash的详细路径,保存。执行swf,不再出错了。OK

如:在C:\WINDOWS\system32\Macromed\Flash\FlashPlayerTrust目录下添加一个文件,比 如:1.txt(文件名可任意起),文件内容为:“D:\demo\test\”即项目的路径,当然也可以设置为“D:\”

%UserHome%\Application Data\Macromedia\Flash Player\#Security\FlashPlayerTrust目录下添加 一个文件,比 如:flexproject.cfg(文件名可任意起),文件内容为:“D:\demo\test\”即项目的路径,当然也可以设置为“D:\”

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 全屏 打印 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多