Я бы хотел применить требование, чтобы клиентский скрипт внутри страницы (который, в свою очередь, загружался в iframe другой страницы) запускался только тогда, когда родительская страница находится в том же домене верхнего уровня, что и страница в рамке ( хотя это может быть на другом имени хоста в этом домене). Это выполнимо?
Я предполагаю, что простое решение взглянуть на top.location.host
не будет доступно из-за ограничений межсайтового скриптинга, но мне интересно, могут ли подойти другие хакеры javascript.
Ограничения на любое потенциальное решение, включая:
Мне нужно иметь возможность выполнять XmlHttpRequest внутри дочерней страницы, и мне нужно проверить, что имя хоста находится в том же домене до того, как я сделаю эти вызовы. (Это затрудняет решение document.domain , поскольку настройка AFAIK document.domain
отключает возможность выполнения XmlHttpRequest вызовов.
Я могу управлять сценарием на стороне клиента и HTML-кодом как на родительском, так и на дочернем уровне (и при необходимости могу создавать новые страницы), но не могу вносить какие-либо изменения в код на стороне сервера.
Я не могу смоделировать вышесказанное с помощью вызовов на стороне сервера или прокси-серверов, потому что имя хоста дочерней страницы использует систему аутентификации форм с файлами cookie в области имен хостов, к которым я не могу получить доступ с родительской страницы, поскольку она находится на другой странице. Имя хоста.
У меня недостаточно контроля над сайтом дочернего фрейма, чтобы можно было разместить оба сайта за одним и тем же обратным прокси-сервером или балансировщиком нагрузки (что позволило бы мне разместить оба сайта на одном имени хоста).
На самом деле мне не нужен доступ к любому интерфейсу внутри IFrame - iframe невидим, и я использую его только для запуска javascript в контексте безопасности сайта на имени хоста, отличном от родительской страницы.
Так что на данный момент я в тупике. Есть идеи? Я хочу убедиться, что я не пропускаю простое решение, прежде чем сдаться.