1

我正在尝试使用在 Firefox 4 中运行的 Flex 应用程序中的 FileReference 执行文件上传。但是,当我尝试调用 upload() 方法时,Filereference 会引发 IOError 并显示以下内容

Error #2038: File I/O Error. URL: http://localhost:8080/admin/upload

如果我没有为 IOErrorEvent 显式添加侦听器,那么我会收到一个 Flash 播放器弹出窗口说明

SecurityError: Error #2000: No active security context.

该请求甚至没有到达我的服务器(我可以通过在 Java 代码中放置断点并观察使用 HTTPFox 发出的 HTTP 请求来验证),所以在我看来这是一个客户端问题(对吗?)。我已经在 google 上搜索了一些问题,建议包括将 upload() 调用包装在 timeout/callLater 中,并尝试将 sessionId 附加到请求中(因为 Firefox 为上传创建了一个新线程并且没有附上正确的cookies)。这些方法都不适合我。

我在 Internet Explorer 上没有遇到这个问题,只有 Firefox。

有没有人遇到过这个?有什么建议么?谢谢你的帮助。

编辑:应该提到 SWF 和被请求的 URL 在同一台服务器上 (localhost:8080)。

4

2 回答 2

0

来自FileReference的文档:

对于在 Flash Player 中运行的内容或在应用程序安全沙箱之外在 Adob​​e AIR 中运行的内容,上传和下载操作只能访问其自己的域内以及 URL 策略文件指定的任何域内的文件。如果启动上传或下载的内容与文件服务器不是来自同一个域,则在文件服务器上放置一个策略文件。

另外 - 这是作为发行版运行还是在调试器中运行?有时服务器访问的行为是完全不同的。

于 2013-02-21T12:01:55.777 回答
-3

相当正常的安全沙盒问题(不常见于 Firefox,但常见于 Flash Player)。

您只需要在您的网络服务器的根目录上有一个跨域文件。

于 2011-05-11T16:17:56.137 回答