gpt4 book ai didi

actionscript-3 - as3 XMLSocket 不请求策略文件

转载 作者:行者123 更新时间:2023-12-03 17:54:46 24 4
gpt4 key购买 nike

我在这里找到了很多类似的帖子,但似乎没有一个能解决我遇到的确切问题。

我只是想将一个 XMLSocket 连接到我的服务器,在我尝试连接后大约 10 秒,我收到一个 SecurityErrorEvent: Error #2048: Security sandbox conflict (cannotload data from ##.##.##.##: 9024)。

服务器端,我有一个监听端口 9024 的 php 脚本。我很确定它工作正常,因为我可以使用其他 php 脚本连接到它。此外,当我的客户端 php 发出策略文件请求时,我的服务器脚本会返回该策略。这是as3:

private var sock:XMLSocket  = new XMLSocket();

// in my connection method
Security.allowDomain("domain.com");
Security.loadPolicyFile("dubDomain.domain.com/crossdomain.xml");
Security.loadPolicyFile("xmlsocket://domain.com:9024");
sock.connect("11.11.11.11", 9024);

在调用 sock.connect 之前,我在 as3 中将监听器设置为套接字,但我认为在触发它们之前会发生任何错误。

我的理解是,在第二个 Security.loadPolicyFile 或 socket.connect 应尝试连接到套接字 9024 处的服务器并请求策略文件。我相信 sock.connect 只会在无法从端口 843 获得响应后发送请求。

但是,在服务器端,它显示从未尝试连接。我已经从 IDE(FlashDevelop)和上传到服务器的 swf 中尝试过这个。

我会在端口 843 上尝试,但我的服务器上没有管理员权限。如果重要,这里有一些 php 脚本:
$client = socket_accept($sock);
if (socket_getpeername($client, $address, $theirport))
{
echo "Client $address: $theirport is now connected to us\n";
}
$input = socket_read($client, 1024000);
echo "[client] $input";

$sock 似乎设置得很好,因为我可以使用另一个 php 脚本进行连接,但是当我尝试与 as3 连接时它会一直等待。

有什么建议?我误解了什么吗?提前致谢。

最佳答案

Security.loadPolicyFile("subDomain.domain.com/crossdomain.xml");
sock.connect("11.11.11.11", 9024);

您正在为子域请求跨域文件。它最多允许您连接到 subdomain.domain.com。它绝对不能让您连接到 domain.com。

XMLSocket 会做什么,是在它认为可以的地方加载跨域,与您提供的主机 IP 相关。这将是第一个 11.11.11.11/crossdomain.xml .如果找不到,它会尝试访问 11.11.11.11:843 .如果失败,您将抛出安全错误。

因此,您要么需要直接连接到您的子域:
 sock.connect("subDomain.domain.com", 9024);

或者添加一个 crossdomain.xml,它允许您在 11.11.11.11:9024、11.11.11.11/crossdomain.xml 上进行连接:
<allow-access-from domain="YOURSWFDOMAIN" to-ports="9024"/>

然后,您将收到来自服务器闪存的请求。那你就可以走了。

关于actionscript-3 - as3 XMLSocket 不请求策略文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13088049/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com