我的Flash游戏需要连接到我的PHP Socket Server。由于安全原因,策略文件在尝试连接时必须发送到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代码上方添加 header 来解决此问题:
socket_write($socket, "Content-Type: text/xml\n");
不幸的是,我仍然遇到相同的错误。我输入的内容类型有误吗?
最佳答案
尝试发送此:
HTTP/1.1 200 OK\r\nContent-Type: text/xml\r\n\r\n
确保在此之前没有发送任何消息。
另外,在关闭套接字之前发送
\r\n
。
关于actionscript-3 - 如何使我的PHP Socket Server将策略文件发送到Flash客户端?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1082676/