Моя флеш-игра должна подключаться к моему серверу сокетов PHP. Из соображений безопасности файл политики должен быть отправлен флэш-клиенту, когда он пытается подключиться.
Вот что я сделал.
В 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);
Однако я получаю следующую ошибку: «Игнорирование файла политики по адресу (URL) из-за отсутствия Content-Type». Итак, я попытался исправить это, добавив заголовок прямо над моим XML-кодом:
socket_write($socket, "Content-Type: text/xml\n");
К сожалению, я все еще получаю ту же ошибку. Я неправильно указываю тип контента?