flash - 当 .swf 和 http 目标都在 localhost 上时,为什么 Flash 需要 crossdomain.xml 文件?

标签 flash apache-flex actionscript-3 crossdomain.xml

我有一个小型客户端/服务器测试应用程序,其中有一个 Flex 应用程序,它对服务器应用程序发出 HTTP 请求。服务器应用程序是在我的本地计算机上运行的脚本,监听端口 8001。客户端是我在本地运行的 swf,并使用 mx.rpc.http.HTTPService发出页面请求。

HTTPService 的设置如下:

_HttpService = new HTTPService();
_HttpService.url = "http://localhost:8001";
_HttpService.contentType = "text/xml";

当我发出基本页面请求时,我的服务器应用程序首先收到 "GET /crossdomain.xml HTTP/1.1"请求失败,因为我没有 crossdomain.xml 文件。我没有到位的原因是因为这一切都发生在我的本地机器上(现在),我不应该需要一个(我不认为)。

当我使用 Flex 3.x 时,我确实在没有 crossdomain.xml 的情况下运行过这段代码。我以为我也可以使用 Flex 4。现在我使用的是 Flex 4.5。这里是否存在问题,可能是由于安全策略更改?

所有这些都发生在 localhost 上,为什么 Flash 播放器会请求 crossdomain.xml 文件?

如果有帮助,我的 AsyncResponder 得到的具体错误是:
[FaultEvent fault=[RPC Fault faultString="Security error accessing url" faultCode="Channel.Security.Error" faultDetail="Destination: DefaultHTTP"] messageId="F43DCBFF-E99A-99CC-57D8-535C13C7CD48" type="fault" bubbles=false cancelable=true eventPhase=2]

最佳答案

可能是尽管您在客户端页面和服务器之间拥有相同的主机和协议(protocol),但不同的端口会导致 Flash 无法通过同源测试并请求 crossdomain.xml 以查看允许执行的操作。我假设托管您的 Flash 内容的页面在端口 80 上运行?如果是这种情况,请查看 Wikipedia 关于同源策略的文章 (http://en.wikipedia.org/wiki/Same_origin_policy) 了解详细信息。

crossdomain.xml 对于本地测试来说似乎不太麻烦,并且在 help.adobe.com 上有很好的记录。您可以像这样在网站的根目录中创建一个 crossdomain.xml,这将允许所有访问:

<?xml version="1.0"?> 
<!-- http://localhost/site/crossdomain.xml --> 
<cross-domain-policy> 
    <site-control permitted-cross-domain-policies="all"/> 
    <allow-access-from domain="*" to-ports="*"/> 
</cross-domain-policy>

我不会将上述内容用于本地开发以外的任何内容,因为您基本上允许任何域请求内容。

希望这可以帮助!

关于flash - 当 .swf 和 http 目标都在 localhost 上时,为什么 Flash 需要 crossdomain.xml 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6222499/

相关文章:

actionscript-3 - AS3 POST 请求作为 GET 发送

java - 如何在服务器端动态创建 Flash 图像?

flash - 查找两种已知颜色之间的颜色百分比值

actionscript-3 - 闪存/AS3 : Type was not found or was not a compile-time constant

c - 如何从 Flash 调用 C 函数?

apache-flex - 如何使用 ActionScript 在给定限制内生成随机数?

apache-flex - 如何找出图像中的标注气泡?

apache-flex - 如何在 AS3 中创建自定义 MouseEvent.CLICK 事件(将参数传递给函数)?

javascript - 闪存/AS3 : ExternalInterface. 调用() "Why u no console.log?"

apache-flex - 尝试获取数据网格所选项目的全局 y 坐标