加载远程内容时出现“错误#2032:流错误”

时间:2016-06-13 22:44:32

标签: actionscript-3 flash

我正在尝试使用URLLoader对象从我的Web服务器加载远程内容。 为此,我使用了Adobe帮助中的example代码。

以下是我的尝试:

var loader:URLLoader;

loader = new URLLoader();
configureListeners(loader);

var request:URLRequest = new URLRequest("http://www.fashionboxpk.com/Test2.php");
try
{
    loader.load(request);
}
catch (error:Error)
{
    trace("Unable to load requested document.");
}

function configureListeners(dispatcher:IEventDispatcher):void
{
    dispatcher.addEventListener(Event.COMPLETE, completeHandler);
    dispatcher.addEventListener(Event.OPEN, openHandler);
    dispatcher.addEventListener(ProgressEvent.PROGRESS, progressHandler);
    dispatcher.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
    dispatcher.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler);
    dispatcher.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
}
function completeHandler(event:Event):void
{
    var loader:URLLoader = URLLoader(event.target);
    trace("completeHandler: " + loader.data);
}
function openHandler(event:Event):void
{
    trace("openHandler: " + event);
}
function progressHandler(event:ProgressEvent):void
{
    trace("progressHandler loaded:" + event.bytesLoaded + " total: " + event.bytesTotal);
}
function securityErrorHandler(event:SecurityErrorEvent):void
{
    trace("securityErrorHandler: " + event);
}
function httpStatusHandler(event:HTTPStatusEvent):void
{
    trace("httpStatusHandler: " + event);
}
function ioErrorHandler(event:IOErrorEvent):void
{
    trace("ioErrorHandler: " + event);
}

但是在编译时,我得到了这个输出:

openHandler: [Event type="open" bubbles=false cancelable=false eventPhase=2]
progressHandler loaded:384 total: 384
Error opening URL 'http://www.fashionboxpk.com/Test2.php'
httpStatusHandler: [HTTPStatusEvent type="httpStatus" bubbles=false cancelable=false eventPhase=2 status=406 responseURL=null]
ioErrorHandler: [IOErrorEvent type="ioError" bubbles=false cancelable=false eventPhase=2 text="Error #2032: Stream Error. URL: http://www.fashionboxpk.com/Test2.php"]

那么,我该如何避免这些错误并正确加载该内容?

1 个答案:

答案 0 :(得分:0)

您的crossdomain.xml声明只允许在您自己的域中发出请求(并且您无需使用crossdomain.xml从您自己的域中读取)。

因此,如果您尝试通过从服务器加载内容来本地测试它,它将无法正常工作。虽然我认为在这种情况下你应该得到安全沙箱违规错误。

您获得的HTTP状态为406(“不可接受”)。因此,您可以更改您的跨域,以便它允许来自其他域的请求或检查您的服务器设置,如果有关于PHP文件的任何特殊内容。

对于开始,请将其作为您的crossdomain.xml进行测试:

<?xml version="1.0" ?>
<cross-domain-policy>
   <allow-access-from domain="*" />
</cross-domain-policy>

请注意,这允许任何域向您的服务器发送请求,这是一个严重的安全风险。这适用于测试,但您应在此处为生产系统指定显式域