Flash沙盒安全错误在最后一天突然出现。死在水里。错误#3769

Flash沙盒安全错误在最后一天突然出现。死在水里。错误#3769,flash,pdf,arcgis,esri,Flash,Pdf,Arcgis,Esri,我有一套本地托管的基于Flex/AGS的应用程序,已经运行了多年 在过去的一天左右,我只在IE浏览器中遇到以下沙盒安全错误: SecurityError:错误#3769:安全沙盒冲突:使用navigateToUrl()时无法发送HTTP头 这是我们的crossdomain.xml文件: 只有当您尝试使用我们的alivepdf打印过程(多年来一直没有问题)时,才会发生错误。我意识到这不是esri的问题,但我希望这里有一些专家可以帮忙。事实上,在我解决这个问题之前,我所有的pdf创建功能对于IE来说

我有一套本地托管的基于Flex/AGS的应用程序,已经运行了多年

在过去的一天左右,我只在IE浏览器中遇到以下沙盒安全错误:

SecurityError:错误#3769:安全沙盒冲突:使用navigateToUrl()时无法发送HTTP头

这是我们的crossdomain.xml文件:

只有当您尝试使用我们的alivepdf打印过程(多年来一直没有问题)时,才会发生错误。我意识到这不是esri的问题,但我希望这里有一些专家可以帮忙。事实上,在我解决这个问题之前,我所有的pdf创建功能对于IE来说都是死水

如果您转到并单击“pdf”按钮,然后单击“创建pdf”,则进度条将挂起,否则您将出现上述闪存错误

pdf创建过程在Firefox中运行良好,偶尔也可以在Chrome上运行(但Chrome有一个单独的pdf问题与此无关)


任何提示或帮助都将不胜感激。我已经用尽了这方面的所有资源。

错误消息说明了一切:
在使用navigateToUrl()时无法发送HTTP头。
。使用方法时,提供给它的对象不应设置任何标题。正如您所发现的,这是13.0.214版FP中引入的新限制,可能是在解决FP[APSB14-14]安全公告中的一个/一些问题的过程中引入的。

我刚刚发布了一个适合我的解决方案:

基本上,因为我在我的应用程序上不使用标题,所以我只是把它们去掉了

var myRequest:URLRequest=新的URLRequest(url:String);
//这里我不知道发送了多少头,所以我们删除了所有头。
while(myRequest.requestHeaders.length>0){
myRequest.requestHeaders.pop();
}

我遇到了这个问题,通过更换以下部件解决了它:

var jpgSource:BitmapData = new BitmapData(MovieClip(root).main_mov.width, MovieClip(root).main_mov.height);
jpgSource.draw(MovieClip(root).main_mov);

var jpgEncoder:JPGEncoder = new JPGEncoder(85);
var jpgStream:ByteArray = jpgEncoder.encode(jpgSource);
var header:URLRequestHeader = new URLRequestHeader("Content-type", "application/octet-stream");
var jpgURLRequest:URLRequest = new URLRequest("http://www.mysite.co.uk/tools/generic/jpg_encoder_download.php?name=design.jpg");
jpgURLRequest.requestHeaders.push(header);
jpgURLRequest.method = URLRequestMethod.POST;
jpgURLRequest.data = jpgStream;

navigateToURL(jpgURLRequest, "_self"); // Use _self not _blank to prevent popup blocker
与:

如果现在使用PHP作为文件输出,如
jpg\u encoder\u download.PHP
,您会注意到

$GLOBALS[“HTTP\u RAW\u POST\u DATA”]
将不再有效。我将
$GLOBALS[“HTTP\u RAW\u POST\u DATA”]
替换为

文件获取内容('php://input')
现在可以完美地工作,如下面的示例所示

//获取字节数组
$jpg=文件获取内容('php://input');
//“为下载添加标题”对话框
标题(“内容类型:图像/jpeg”);
标题(“内容处置:附件;文件名=“.$\u GET['name']);
echo$jpg;

这是AdobeFlash13.0.0.214中的一个bug,也可能是13.0.0.0中的bug。详情请参阅:

更新:看起来罪魁祸首是最新的Flash播放器(13…..214)。正在查看是否可以向crossdomain.xml文件添加任何内容来修复此问题。欢迎任何大大小小的想法。而且,这不仅仅是IE,还有Firefox。Chrome有自己内置的Flash播放器,所以它可能受到影响,也可能不受影响。许多开发者认为,在3.0.0.214中引入的限制过于苛刻。它破坏了许多应用程序。一个bug已经提交,你可以在这里投票支持它:有希望。Adobe今天提到,他们将在下一版本的flash中放宽HTTP头规则。
var jpgSource:BitmapData = new BitmapData(MovieClip(root).main_mov.width, MovieClip(root).main_mov.height);
jpgSource.draw(MovieClip(root).main_mov);

var jpgEncoder:JPGEncoder = new JPGEncoder(85);
var jpgStream:ByteArray = jpgEncoder.encode(jpgSource);
var jpgURLRequest:URLRequest new URLRequest("http://www.mysite.co.uk/tools/generic/jpg_encoder_download.php?name=design.jpg");
jpgURLRequest.method = URLRequestMethod.POST;
jpgURLRequest.data = jpgStream;

navigateToURL(jpgURLRequest, "_self"); // Use _self not _blank to prevent popup blocker