2009-04-08 6 views
3

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

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

ответ

3

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

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

+0

Мы решили, что, поскольку мы не можем достоверно определить, была ли Flash инициатором запроса, мы не потратили больше энергии, пытаясь решить эту проблему. –

2

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

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

1

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

+0

На самом деле у меня есть флеш-фильм здесь, где выполняется HTTP-запрос, который предоставляет пользовательский агент браузера. – cmc

0

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

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