У меня был клиент, у которого возникали странные проблемы, возникающие с флеш-объектом, встроенным в iframe, который вызывал PHP-скрипт и передавал переменные POST.
Думаю, я наконец-то примерно понялчто происходит, но был бы признателен за разъяснение о том, прав ли мой догадка.
Установка довольно сложная, поэтому, пожалуйста, потерпите меня ...
Ее веб-сайт использует одиниз тех настроек сайта, так что он немного ограничен в своих возможностях.Она хотела включить мое приложение Flash, но не смогла, поэтому в качестве обходного пути она поместила приложение Flash в другой домен, а затем встроила его с помощью iframe.
Часть того, что делает приложение Flash, - это открытиеотдельное окно, а затем вызовите скрипт PHP, передав ему переменные POST.
В Chrome, Safari и Firefox это работает.В IE все переменные POST не публикуются.
С помощью сниффера HTTP я смог подтвердить, что переменные действительно были отправлены, но результат ясно показывает, что скрипт PHP их не видит.
Это действительно сводило меня с ума, пока я не вспомнил, что здесь есть два РАЗЛИЧНЫХ домена.
Помните, как ей пришлось встраивать контент из одного домена в iframe в другой домен?
Так что я думаю, что это проблема междоменной безопасности, которая приводит к блокировке данных POST на стороне сервера.
Но тогда почему это работает в других браузерах?
Вот моя теория ...
В Chrome, Firefox и Safari браузер отправляет данные в сценарий со страницей ВНУТРИ IFrame в качестве источника.Поэтому отправитель и целевой сценарий находятся в одном и том же домене.
В IE браузер отправляет данные в сценарий со страницей CONTAINER в качестве отправителя.В этом случае отправитель и сценарий назначения находятся в разных доменах, а сервер блокирует данные.
Итак, что вы думаете?Это звучит как правильное объяснение?Это известная особенность IE?Что должен делать совместимый со стандартами браузер в этой ситуации?
ОБНОВЛЕНИЕ:
Оказывается, проблема не только в кросс-домене.Даже с содержанием iframe, поступающим с ЖЕ САМОГО сайта, это все же происходит.Только в IE, хотя.Странно, правда?