У меня есть приложение, разработанное во Flash, и мне нужно получить доступ к некоторым php-файлам. поэтому php-файл возвращает некоторые данные, если доступ получен из swf. Как я могу определить, пришел ли запрос от вспышки или нет?
без передачи переменных get / post в php.
Возможно, пользовательский агент / референт. Имейте в виду, что запросы могут быть легко подделаны
Я не думаю, что действительно существует надежный способ определить, выполнила ли Flash запрос. Flash не позволяет вам устанавливать пользовательский агент, и существует множество ограничений на то, какие заголовки могут быть установлены.
Взгляните на http://help.adobe.com/en_US/AS3LCR/Flash_10.0/flash/net/URLRequestHeader.html.
как предложил Джон Баллингер, вы можете настроить свой собственный заголовок, используя это, и искать этот заголовок на странице PHP.
Это ответ на ответ Джона Бэллингера :
import flash.net.URLLoader; import flash.net.URLRequest; import flash.net.URLRequestHeader; var loader:URLLoader = new URLLoader(); var request:URLRequest = new URLRequest("http://www.mydomain.com/myapp.php"); var header:URLRequestHeader = new URLRequestHeader("custom-header-name", "value"); request.requestHeaders.push(header); try { loader.load(request); } catch (error:Error) { trace("Unable to load requested document."); }
Вы также должны обязательно изменить свой crossdomain.xml, чтобы заголовки HTTP были следующими:
<!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd"> <cross-domain-policy> <allow-access-from domain="*.mydomain.com" /> <allow-http-request-headers-from domain="*.mydomain.com" headers="*" /> </cross-domain-policy>
Вы не можете сказать, что он исходит от флэш-памяти, поскольку флэш-память использует браузер для выполнения запроса.
Но в запросе флэш-памяти вы можете добавить свой собственный заголовок в HTTP-запрос (вы можете сделать это довольно легко во Flash). Таким образом, вы можете увидеть, поступает ли запрос от Flash.