2016-06-13 98 views
-5

我试图使用URLLoader对象从我的Web服务器加载远程内容。为此,我使用了Adobe帮助中的example代码。加载远程内容时出现“错误#2032:流错误”

这里是我的尝试:

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"] 

那么,怎样才能避免我这些错误,并正确加载的内容?

+0

看起来在[http://www.fashionboxpk.com/crossdomain.xml](http:/)上不存在crossdomain.xml /www.fashionboxpk.com/crossdomain.xml) –

+0

欢迎来到堆栈溢出。请阅读[this](http://stackoverflow.com/questions/ask/advice)了解谁提出了很好的问题。好的问题在SO上得到了很好的答案。不好的问题往往会被忽略。 –

+0

这是一个问题吗?解释你真的**在这里尝试实现...使用AS3打开浏览器选项卡中的PHP页面?或者将php页面内容读入AS3? –

回答

0

您的crossdomain.xml声明只允许来自您自己的域的请求(并且您不需要从您自己的域中读取crossdomain.xml)。

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

你正在收到的HTTP状态说406(“不可接受”)。所以你可能会改变你的跨域,所以它允许来自其他域的请求,或者检查你的服务器设置,如果有什么特别的PHP文件。

对于开始,测试这个作为你的crossdomain.xml:

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

注意,这样使得任何域发送请求到服务器,这是一个严重的安全隐患。这对于测试是很好的,但是您应该在此处为生产系统指定显式域名

相关问题