AS3使用Loader加载受htaccess保护的文件

jjw*_*jjw 3 flash actionscript-3

我正在尝试将托管在站点上的外部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);
Run Code Online (Sandbox Code Playgroud)

文件URL,用户名,密码和base64编码都经过检查并且正确无误.

但是,我收到以下错误:

Error opening URL 'http://www.my-website.com/externalFlashFile.swf'
Error #2044: Unhandled IOErrorEvent:. text=Error #2036: Load Never Completed.
Run Code Online (Sandbox Code Playgroud)

任何想法我可能做错了,或者从纯粹的角度来看是否有更好的方法来解决这个问题?

谢谢.

Nox*_*tis 5

白鲸,圣杯

在Adobe®AIR®中,应用程序安全沙箱中的内容(例如随AIR应用程序一起安装的内容)可以使用任何请求标头,而不会出现错误.但是,对于在不同安全沙箱中的Adobe AIR中运行的内容,或者对于在Flash®Player中运行的内容,使用以下请求标头会导致运行时错误:

Accept-Charset,Accept-Encoding,Accept-Ranges,Age,Allow,Allowed,Authorization,Charge-To,Connect,Connection,Content-Length,Content-Location,Content-Range,Cookie,Date,Delete,ETag,Expect, Get,Head,Host,If-Modified-Since,Keep-Alive,Last-Modified,Location,Max-Forwards,Options,Origin,Post,Proxy-Authenticate,Proxy-Authorization,Proxy-Connection,Public,Put,Range, Referer,Request-Range,Retry-After,Server,TE,Trace,Trailer,Transfer-Encoding,Upgrade,URI,User-Agent,Vary,Via,Warning,WWW-Authenticate,x-flash-version.

URLRequestDefaults.setLoginCredentialsForHost:设置所选主机的默认用户和密码凭据.... 只有在应用程序安全沙箱中运行的Adobe®AIR®内容才能使用URLRequestDefaults类.

因此,您只有一个选择:从需要授权的域名的网页加载您的swf.在加载swf之前,您将通过http授权步骤,浏览器将维护其余部分.

实际上,当您尝试访问http授权后面的内容时,服务器会发出一个代码= 401的http响应(除非您事先发送授权标头).Flash Player无法对其执行任何操作,只有AIR运行时能够以任何方式发送Authorization标头.