我正在尝试将网站上托管的外部 SWF 加载到本地 SWF 文件中。外部 SWF 位于使用 htaccess 的密码保护目录中。
这是我当前尝试使用的代码:
var loaderUrlRequest:URLRequest = new URLRequest("http://www.my-website.com/externalFlashFile.swf");
loaderUrlRequest.requestHeaders.push(new URLRequestHeader("Authorization", "Basic " + $Base64.encode("username:password")));
loaderUrlRequest.method = URLRequestMethod.POST;
loaderUrlRequest.data = true;
var loader:Loader = new Loader();
addChildAt(loader, 0);
loader.load(loaderUrlRequest);
文件 URL、用户名、密码和 base64 编码均已检查且正确。
但是,我收到以下错误:
Error opening URL 'http://www.my-website.com/externalFlashFile.swf'
Error #2044: Unhandled IOErrorEvent:. text=Error #2036: Load Never Completed.
任何想法我可能做错了什么,或者是否有更好的方法从纯闪存的角度来解决这个问题?
Thanks.
白鲸,圣杯 http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/net/URLRequestHeader.html
在 Adobe® AIR® 中,应用程序安全沙箱中的内容(例如随 AIR 应用程序安装的内容)可以使用任何请求标头,而不会出现错误。However,对于在不同安全沙箱中的 Adobe AIR 中运行的内容,或者适用于在 Flash® Player 中运行的内容,使用以下请求标头导致运行时错误:
接受字符集、接受编码、接受范围、年龄、允许、允许、授权、收费、连接、连接、内容长度、内容位置、内容范围、Cookie、日期、删除、ETag、期望、获取、头、主机、自修改时间、保持活动状态、上次修改时间、位置、最大转发、选项、来源、发布、代理验证、代理授权、代理连接、公共、放置、范围、引用者、请求范围、重试后、服务器、TE、跟踪、预告片、传输-编码、升级、URI、用户代理、变化、通过、警告、WWW 身份验证、x-flash 版本。
URLRequestDefaults.setLoginCredentialsForHost:为选定主机设置默认用户和密码凭据。 ...仅 Adobe® AIR®在应用程序安全沙箱中运行的内容可以使用 URLRequestDefaults 类。
因此,您只有一个选择:从需要授权的域的网页加载您的 swf。在加载 swf 之前,您将完成 http 授权步骤,浏览器将维护其余部分。
事实上,当您尝试访问 http 授权背后的内容时,服务器会发出 code=401 的 http 响应(除非您事先发送 Authorization 标头)。 Flash Player 对此无能为力,并且只有 AIR 运行时才能够以任何方式发送 Authorization 标头。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)