Как я могу достоверно определить, был ли Flash инициатором запроса к услуге? - PullRequest
3 голосов
/ 08 апреля 2009

Мне нужно иметь возможность определить, был ли flash источником запроса к службе ASP.NET. Причина в том, что Flash не может обрабатывать сообщения SOAP, когда код состояния ответа отличается от 200. Однако я разрешаю исключение всплывать через наши веб-службы SOAP, и в результате код состояния для ошибки сервера SOAP равен 500. До Flash 10 я мог проверять свойство referrer и, если оно заканчивалось на .SWF, я изменил код состояния на 200, чтобы наше приложение Flex могло обрабатывать сообщения SOAP соответствующим образом. Но с момента появления Flash 10 реферер больше не отправляется. Я хотел бы использовать заголовок x-flash-version, но, похоже, он отправляется только при использовании IE, а не FF.

Что приводит меня к моему вопросу: как я могу достоверно определить, был ли Flash инициатором запроса к услуге?

Ответы [ 4 ]

3 голосов
/ 08 апреля 2009

Вы не можете надежно сделать это - в конце концов, это может быть прокси-сервер, или кто-то, возможно, отслеживал трафик вашего компонента Flash, чтобы понять, как повторно использовать ваш API без каких-либо ограничений, которые не будет делать версия Flash есть.

Для базовой проверки работоспособности, чтобы дифференцировать выходные данные, вы можете просто добавить флаг, чтобы сказать «Версия Flash API, пожалуйста»; Но со всеми HTTP-коммуникациями довольно просто подделать все, что требуется.

2 голосов
/ 08 апреля 2009

Как насчет http://domain.com/path/to/target?flash=true? Если все, что вы делаете, это меняете API или возвращаете разные ошибки, вам не нужен безопасный метод обнаружения.

Изменить: Обратите внимание, это определенно не "надежный", но вам действительно нужен надежный метод обнаружения или тот, который просто работает? Это работает, это просто не безопасно, и если вам нужно, чтобы это было безопасно, вы делаете что-то не так, потому что невозможно узнать, какой клиент на самом деле используется.

1 голос
/ 15 апреля 2009

Вы можете проверить пользовательский агент (но он может быть подделан), Flash использует что-то вроде «Adobe Flash»

0 голосов
/ 25 апреля 2012

Самый безопасный способ (из представленных простых опций) состоит в том, чтобы Regex соответствовал URL-адресу реферера, в котором будет .swf.

Это будет чертовски сложно подделать, чем строка запроса / параметр формы & flash = true. Конечно, его можно взломать, используя хакерские инструменты, которые могут отправлять ложные HTTP-заголовки (реферер), но из представленных вариантов это требует наибольшего усилия.

...