抱歉我的英语不好。
我有以下问题:
我有一个.fla文件,适用于Socket类。有一个服务器(用Delphi XE编写,但没关系)。我从.fla连接到它。 当我从Flash Professional CS5中执行我的.fla时,一切正常。但是当我试图从资源管理器(Win 7,Flash Player 10)执行生成的.swf时,我收到了一个错误:
SecurityError: Error #2010: Local-with-filesystem SWF files are not
permitted to use sockets. at flash.net::Socket/internalConnect() at
flash.net::Socket/connect() at payterminal::TLogger() at
payterminal::TMainTerminalClass() at
testterminal_fla::MainTimeline/frame1()
套接字按如下方式连接到服务器:
Sock.connect('127.0.0.1',5243);
我尝试将“文件 - >发布设置”中的“本地播放安全性”设置更改为“仅限访问网络。
确定。 Flash播放器启动时没有错误,但它会向服务器发送以下消息:
<policy-file-request/>
此套接字连接关闭后。
我也尝试使用Security.AllowDomain()方法,但没有取得任何积极成果。
我尝试了另一种方法。服务器有两个监听套接字。第一次侦听端口843.当此套接字收到消息policy-file-request时,它会向.swf发送交叉域文件,如下所示:
<?xml version="1.0"?> <!DOCTYPE cross-domain-policy SYSTEM
"http://www.adobe.com/xml/dtds/cross-domain-policy.dtd"> <!-- Policy
file for xmlsocket://socks.mysite.com --> <cross-domain-policy>
<allow-access-from domain="*"/>
</cross-domain-policy>
插座(843)关闭后。 但是第二个侦听套接字得到了相同的消息:。
毕竟,我的.swf仍在Flash Player中打开,没有错误,但套接字连接没有发生。 我尝试了不同的跨域文件,但我所有的尝试都让我得到了相同的结果。
这就是我的问题。我期待着你的帮助。感谢。
答案 0 :(得分:1)
user976479这是完全正常的行为
Flash播放器将首先尝试在端口843上获取主xml策略文件,然后如果找不到主设备则尝试5243。
一旦服务器响应交叉域闪存播放器的请求,将关闭连接(始终)
我为我的套接字服务器使用以下crossdomain.xml
请记住,一旦收到域策略,您必须让Flash播放器第二次重新连接。第二次你不会断开连接。
<?xml version="1.0" encoding="UTF-8" ?>
<cross-domain-policy xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.adobe.com/xml/schemas/PolicyFileSocket.xsd">
<allow-access-from domain="*" to-ports="*" />
</cross-domain-policy>
最后一件事。 使用高于10k的端口,因为较低的端口通常为其他应用程序保留,可能与之相冲突。
答案 1 :(得分:0)
您的跨域文件没有问题。
Flash Player的安全功能不允许本地(file://协议)文件访问互联网。要在浏览器中测试您的swf,您必须将其上传到您的服务器然后进行测试。
或者,您可以下载要在本地计算机上安装的服务器进行测试。 我使用wampserver
编辑:由于您已经在运行本地服务器,请尝试上传到该服务器。然后访问您的swf http://127.0.0.1/mySwf.swf