发送 URL 在 Flash Player 14 中不起作用

Posted

技术标签:

【中文标题】发送 URL 在 Flash Player 14 中不起作用【英文标题】:sendToURL not working in flashplayer 14 【发布时间】:2014-12-26 08:13:21 【问题描述】:

这段代码在 flashplayer 11 中工作,但在 flashplayer 14 中不工作。

AS3 代码:

private function savePDF(pdfBinary:ByteArray, urlString:String):void

try

    //result comes back as binary, create a new URL request and pass it back to the server
    var header:URLRequestHeader = new URLRequestHeader("Content-type", "application/octet-stream");

    var sendRequest:URLRequest = new URLRequest(urlString);
        sendRequest.requestHeaders.push(header);
        sendRequest.method = URLRequestMethod.POST;
        sendRequest.data = pdfBinary;                
        sendToURL(sendRequest);

     catch (e:Error) 
        // handle error here
        trace("Error in savePDF "+e.message);
        trace("StackTrace : "+e.getStackTrace());
    

 

这些是我得到的错误:

Error in savePDF Error #3769: Security sandbox violation: Only simple headers can be used with navigateToUrl() or sendToUrl().
StackTrace : SecurityError: Error #3769: Security sandbox violation: Only simple headers can be used with navigateToUrl() or sendToUrl().
    at global/flash.net::sendToURL()
    at Export2Publish/savePDF()[my_project_dir\src\Export2Publish.mxml:158]
    at Export2Publish/GeneratePDF()[my_project_dir\src\Export2Publish.mxml:386]
    at Export2Publish/getUrl()[my_project_dir\src\Export2Publish.mxml:138]
    at Export2Publish/___Export2Publish_Application1_creationComplete()[my_project_dir\src\Export2Publish.mxml:3]
    at flash.events::EventDispatcher/dispatchEventFunction()
    at flash.events::EventDispatcher/dispatchEvent()
    at mx.core::UIComponent/dispatchEvent()[my_framework_dir\src\mx\core\UIComponent.as:9051]
    at mx.core::UIComponent/set initialized()[my_framework_dir\src\mx\core\UIComponent.as:1167]
    at mx.managers::LayoutManager/doPhasedInstantiation()[my_framework_dir\src\mx\managers\LayoutManager.as:698]
    at Function/http://adobe.com/AS3/2006/builtin::apply()
    at mx.core::UIComponent/callLaterDispatcher2()[my_framework_dir\src\mx\core\UIComponent.as:8460]
    at mx.core::UIComponent/callLaterDispatcher()[my_framework_dir\src\mx\core\UIComponent.as:8403]

这个问题有什么解决办法吗?

【问题讨论】:

【参考方案1】:

您可以像这样使用trycatch 开始:

try 
    sendToURL(request);

catch (e:Error) 
    // handle error here

如果问题在开发环境中不可见,我建议您安装 Flash 调试播放器,您可以在此处下载:Flash Player Downloads 以查看您的代码会触发什么样的错误。

如果你的代码没问题,在开发和生产环境中,你应该调试你的服务器端脚本。

【讨论】:

我收到以下错误 SecurityError:错误 #3769:违反安全沙箱:只有简单的标头可以与 navigateToUrl() 或 sendToUrl() 一起使用。知道如何解决这个问题吗? 我认为这是 Flash Player 13.0 的一个错误。看看这里:bugbase.adobe.com/index.cfm?event=bug&id=3759971,但你可以尝试使用`URLLoader`而不是`sendToURL`。 能否请您转换上面的代码,使其使用 URLLoader 而不是 sendToURL 我不能像这样“转换”和测试你的代码,但你可以试试这个:(这是一个未经测试的代码,我写它只是为了给你一个想法,我不确定 URLLoader 会是否解决您的问题,因为我没有测试它):var request:URLRequest = new URLRequest(your_url); request.method = URLRequestMethod.POST; request.contentType = 'multipart/form-data'; request.data = your_byte_array; var loader:URLLoader = new URLLoader(); loader.dataFormat = URLLoaderDataFormat.BINARY; loader.addEventListener(Event.COMPLETE, loader_on_Complete); loader.load(request); 我收到以下错误 :: * Security Sandbox Violation * 与 https:my_url_string 的连接已停止 - 不允许来自 file:///D:/SCOR/FLex/Export2Publish_new/bin-debug/Export2Publish。 savePDF 中的 swf 错误 错误 #2176:某些操作(例如显示弹出窗口的操作)只能在用户交互时调用,例如通过鼠标单击或按钮按下。 StackTrace:SecurityError:错误 #2176:某些操作(例如显示弹出窗口的操作)只能在用户交互时调用,例如通过鼠标单击或按钮按下。在 flash.net::URLStream/load()

以上是关于发送 URL 在 Flash Player 14 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

IE8升级新版Flash Player ActiveX14导致的discuz图片附件无法上传 解决方法

Flash Player信任文件无法与Linux上的嵌入式浏览器一起使用

OSX: 下载Flash Player的脚本

用于 m3u 文件的 Live Flash Player

为啥win7 flash player安装不了怎么办

如何修改adobe flash player插件的默认安装路径?