我的 Flash 游戏需要连接到我的 PHP Socket 服务器。出于安全考虑,当 Flash 客户端尝试连接时,必须将策略文件发送到它。
以下是我所做的。
在 Actionscript / Flex 3 / Flash 中:
Security.loadPolicyFile("http://[SERVER.IP]:9000/crossdomain.xml");
socket.connect(hostName, port); //connect to the socket
[rest of original code]
为了使套接字服务器响应请求,我在服务器中添加了以下内容:
elseif (preg_match("/policy-file-request/i", $buffer) or preg_match("/crossdomain/i", $buffer)) {
socket_write($socket, '<?xml version="1.0"?><cross-domain-policy><site-control permitted-cross-domain-policies="all"/><allow-access-from domain="*" to-ports="9000" /></cross-domain-policy>');
unset($read_sockets[array_search($socket, $read_sockets)]);
socket_shutdown($socket, 2);
socket_close($socket);
但是,我收到以下错误:“由于缺少 Content-Type,忽略 (URL) 处的策略文件。” 所以,我试图通过在我的 xml 代码上方添加一个标题来解决这个问题:
socket_write($socket, "Content-Type: text/xml\n");
不幸的是,我仍然遇到同样的错误。我是否以错误的方式提供内容类型?