Требования:
в домене A есть страница a.html, которая содержит iframe, содержащий страницу b.html домена B. Теперь нам нужно передать значение текстового поля на странице a.html в b.html через кнопку на a.html. . Текстовое поле страницы.
Примечание. b.html — это веб-страница в формате HTML, и она не может получать значения, опубликованные с других веб-сайтов, поэтому вы не можете использовать метод прямой публикации для передачи значений. Однако, если принимающая страница — b.aspx или b.asp, вы не можете использовать метод прямой публикации. уже не могу опубликовать напрямую? Ответ — да, это действительно возможно, но b.asp или b.aspx необходимо обновлять. Как мы можем динамически изменять элементы или значения принимающей страницы без обновления? (Локальные проекты IE могут обеспечить междоменный доступ, но междоменный доступ из внешней сети запрещен по умолчанию. Локальные проекты FireFox и междоменный доступ из внешней сети запрещены.)
Принцип:
браузер запрещает междоменный доступ. Доступ к данным, но браузер не запрещает междоменную и межкадровую передачу значений постов. Мы можем разместить сообщение в домене A во фрейме страницы в домене B, а затем использовать страницу фрейма домена B для доступа к данным в этом домене. На самом деле это небольшая хитрость в HTML-приложениях, позволяющая обеспечить междоменную отправку данных без использования других дополнительных знаний.
Метод:
добавьте две страницы в домен B для обеспечения междоменного доступа к данным: post.aspx и main.aspx.
Отношения страниц следующие: a.html в домене A содержит фрейм. Адрес страницы фрейма — main.aspx в домене B. main.aspx — это набор фреймов, содержащий два фрейма: (frmMain)b.html и (frmPost)post. .aspx.
a.html домена A:
http://www.b**.com/main.aspx"> >
Main домена B .aspx:
Сначала мы сохраняем данные, которые будут переданы в домен B, в форме a.html, а затем отправляем их в post.aspx в домене B.
В это время post.aspx получает значение, а затем выполняет родительский фрейм в этом домене. для доступа к b.html.
string cmd = Request.Form["cmd"];
if (null != cmd && string.Empty != cmd)
{
Response.Write(" ");
}
Нетрудно найти, что перепрыгивая через Здесь используются кадры (то есть слой кадра перескакивает посередине) для обеспечения междоменного доступа к данным. То есть постить в подрамник рамы.
Постскриптум:
Этот пример — всего лишь решение для междоменного доступа в некоторых особых обстоятельствах, которое может быть вам полезно. Поскольку метод прост, его применение имеет множество ограничений. (Однако я думаю, что это очень похоже на ajax. Страница не обновляется, а обработка данных на стороне сервера также завершается^o^).
Сопутствующие веб-текстовые материалы:
Решение междоменного доступа для веб-приложений.
Друзья, которые занимались разработкой Ajax для нескольких веб-сайтов, знают, что если на веб-сайте A мы хотим использовать Ajax для получения определенного контента на веб-сайте B, если на веб-сайте A и на веб-сайте B. не находится в одном домене, поэтому возникают проблемы междоменного доступа. Проблема междоменного доступа Ajax — распространенная проблема, с которой сталкиваются существующие разработчики Ajax.
IE обрабатывает междоменный доступ, открывая окно с предупреждением, чтобы напомнить пользователю. Если пользователь включит сайт в список доверенных или снизит уровень безопасности, IE не будет напоминать вам об этой проблеме.
Когда FireFox и другие браузеры сторонних производителей сталкиваются с междоменным доступом, решением является запрет доступа.
Некоторые люди говорят, что IE — это основной браузер, если его можно нормально использовать. Это плохое утверждение. Хотя IE может справиться с этим, есть предварительные условия: либо пользователь потрудится нажать «Да» после появления на странице окна с предупреждением (нажатие «Нет» не приведет к выполнению вызова Ajax), либо пользователь включит параметр. веб-сайт как надежный сайт. Эти два подхода относительно распространены в приложениях систем управления предприятием, поскольку системные администраторы могут использовать административные средства для обеспечения поведения пользователей. Но для разработки сайтов или порталов в Интернете такой подход не работает.
Недавно я столкнулся с этой проблемой. Мне нужно было, чтобы после междоменного доступа в главном окне появлялись некоторые специальные эффекты. Я искал некоторую информацию и нашел несколько возможных решений путем постоянных попыток и тестирования совместимости в разных браузерах:
1. Метод веб-прокси. . То есть запросы междоменного доступа к веб-сайту B, генерируемые, когда пользователь посещает веб-сайт A, передаются на назначенную страницу веб-сайта A, и страница завершает взаимодействие вместо страницы пользователя, тем самым возвращая соответствующие результаты. Это решение может решить большинство проблем междоменного доступа, которые можно придумать на этом этапе, но оно требует, чтобы веб-сайт A обеспечивал поддержку веб-прокси. Поэтому веб-сайт A и веб-сайт B должны тесно сотрудничать, и каждый процесс взаимодействия - сервер. сайта А. Нагрузка увеличивается, и состояние сеанса не может быть сохранено от имени пользователя.
2. Метод «по требованию». Портал MYMSN использует этот метод, но MYMSN не предполагает проблем междоменного доступа. Динамически управляйте созданием тегов скрипта и завершайте вызов междоменных страниц, изменяя атрибут src тега скрипта. Недостаток этого решения заключается в том, что атрибут src сценария использует метод get для завершения вызова. Если строка, переданная во время запроса, слишком велика, она может работать неправильно. Однако это решение очень подходит для порталов агрегации.
3. метод iframe. Я проверил сообщение о междоменном доступе от Waking up на javaeye. Он упомянул, что решил проблему междоменного доступа с помощью iframe. Действительно, можно использовать iframe для отправки и получения данных, но поскольку родительское окно и дочернее окно не могут взаимодействовать (в случае междоменного доступа это взаимодействие отвергается), воздействие на родительское окно не может быть завершено.
(Я нашел эту статью, добавьте адрес: http://www.javaeye.com/topic/15641 )
4. Метод локального дампа пользователя: IE сам полагается на характеристики платформы Windows, чтобы предоставить нам метод на основе iframe. , Решение использования памяти для «обхода» заключается в том, что данные могут передаваться между двумя окнами через буфер обмена Windows на клиенте. Вам нужно только установить интервал на стороне, получающей данные для опроса, и очистить интервал после получения. результат. . Независимость платформы FF определяет, что он не поддерживает метод буфера обмена, а уязвимость плагина в предыдущих версиях FF была исправлена, поэтому FF не может завершить секретное прохождение через память. Поскольку FF не обеспечивает поддержку файловых операций (перенос данных между доменами не может быть осуществлен посредством файлов cookie), этот технический метод можно использовать только в IE.
5. Мой собственный метод решения такого типа задач: Объединяя предыдущие методы, при посещении сайта А сначала запрашивайте сайт Б для завершения обработки данных, а затем получайте необходимые результаты на основе возвращенного идентификатора. Недостатки этого метода также очевидны. Увеличивается нагрузка на сайт Б. Преимущество заключается в том, что сеанс также сохраняется и улучшается возможность взаимодействия между страницами веб-сайта A и веб-сайта B. Самое главное, что это решение отвечает всем моим потребностям.
Подводя итог, среди вышеперечисленных вариантов я больше всего рекомендую метод по требованию. Этот метод может решить большинство ваших проблем без отправки большого количества данных.
Адрес решения междоменного доступа для веб-приложений: http://www.newbooks.com.cn/info/37166.html
http://www.cnblogs.com/lgamoy/archive/2006/11/23/569633.html.