| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > JavaScript: Общие вопросы > обойти запрет доступа к содержимому iframe |
| Автор: Alx 26.2.2007, 02:51 |
| привет всем) в iframe грузится контент с другого сервера. как получить его document.body.innerHTML? пишет "Отказано в доступе". сам скрипт у меня на локалке |
| Автор: Sardar 26.2.2007, 11:43 |
| Никак. Тебе это никогда не будет нужно. Пиши плагин к лисе (MyIE и т.д.), он имеет доступ до любой страницы. |
| Автор: Alx 26.2.2007, 16:37 |
почему? я отправляю запросы на тот сервер, мне нужно получить ответ... |
| Автор: Alx 27.2.2007, 00:15 |
| понятненько, спасибо) |
| Автор: Alex13 11.3.2007, 08:53 |
| Sardar, то есть кросс-браузерного решения не существует? :( |
| Автор: Sardar 12.3.2007, 11:08 |
| Нет. Если в каком браузере и можно провернуть подобное, то это явно не безопасная бродилка и современем к ней выйдет патч, закрывающий эту дыру. Не надейся, IE7 залатанный хорошо Как уже говорил, многие браузеры позволяют писать плагины, фильтры и прочие примочки на JS. Подобная штука имеет полный доступ до страницы. Для IE пользователей можно попросить поставить MyIE, в котором плагины писать очень просто. |
| Автор: Alex13 13.3.2007, 10:27 |
| Sardar, да не, на ИЕ7 я чихать хотел. Просо хотелась необлшого бота для онлайн игрушки на JS написать, а тут задача самым подлым образом усложнилась:( Ну да ладно, firefox+xpi рулят |
| Автор: JSman 16.3.2007, 01:13 |
| ну мне думается, что на твоем серваке точно пашет что-то типа пхп или перл, ну пусть и отправляются данные в пхп твоего домена и делай с ним все что хочешь. вопрос не к js. это факт. а там тебе и кроссбраузерность будет и все такое |
| Автор: Alex13 17.3.2007, 15:08 |
| JSman, вопрос именно по JS. Мне захотелось написать бота для одной браузерной онлайновки (как небольшое упражнение) и по некоторым причинам хочу написать именно на JS. |
| Автор: lonli 31.3.2007, 01:00 | ||||||
Sardar , ты уверен? У меня не получается.
начиная с trW.document.open(); ничего не делает, сообщения об ошибке не выдаёт
после вывода а выводит в строку состояния "Script Error!". Страницу в обоих случаях нормально загружает. Может мне настройки какие поменять? Код находится в файле .js указанном в plugin.ini |
| Автор: Sardar 31.3.2007, 01:14 |
| lonli, работай с текущей страницей, а не открывай новую. Так например плагин, восстанавливающий мышь работает в стандартной поставке. Идея в том, что пользователь видит страницу и сам кликает передавая управление. |
| Автор: lonli 31.3.2007, 12:35 |
| Спасибо. Код плагина похоже работает как часть той страницы, которая была активна, когда был запущен плагин. Соответественно можно создавать новые окна с url того же домена и управлят их содержимым. А вот как на счёт других доменов? Можно с их содержимым программно работать? Или необходимо вручную загрузить страницу и для неё опять запустить плагин? Спрашиваю из чистого интереса. |
| Автор: Sardar 31.3.2007, 14:55 | ||
Да, только так. Иначе можно было бы писать плагины шпионы и подобное. |
| Автор: Alx 18.7.2007, 04:29 |
| неужели совсем никак добиться взаимодействия между ифреймом и главным окном? :( у меня такая задача.. есть два моих файла: главное окно и ифрейм, но они расположены на разных хостах.. при наведении мышки на ифрейм из него должна передаться переменная в гланое окно. каким-то образом.. может можно как-то из фрейма к родительскому окну обращаться? у меня не получается( едиственное что приходит в голову - Буфер обмена.. навел, скопировалось, убрал курсор - вставилось.. только это не кроссплатформенно.. |
| Автор: korchasa 18.7.2007, 10:19 | ||
Проще использовать proxy page, которая будет расположена на том же хосте, что и активная страница, чем придумывать извращенные способы обхода систем безопасности. Если, конечно, есть возможность использовать серверные языки. |
| Автор: Alx 18.7.2007, 10:49 |
| korchasa, а можно поподробнее? |
| Автор: korchasa 18.7.2007, 11:05 | ||
Есть два сервера: рабочий - тот, на котором мы собираемся показывать этот iframe. внешний - тот, который с которого вы собирались его грузить. proxy page должна перенаправлять все свои запросы на внешний сервер, и отображать его ответ. |
| Автор: Alx 18.7.2007, 11:56 |
| korchasa, о.. а можно тогда пример? Добавлено через 6 минут и 27 секунд смысл фактически заключается в том, чтобы узнать навел ли пользвотель мышь на определенный элмент во фрейме. он специально расположен на другом хосте, чтобы было нельзя сделать это программно из адресной строки главного окна. но когда мышь будет наведена (фрейм сам определит это), надо как-то сообщить об этом главному окну.. любым способом.. хоть удалить нафик этот фрейм.. лишь бы главное окно заметило изменения.. |
| Автор: 12345c 18.7.2007, 15:27 |
| Можно (в IE) перехватить ошибку Access Denied по onerror, но сомневаюсь, что будет возможно программно удалить фрейм. Доступ к фрейму будет заблокирован на всё время его существования, даже если свой домен туда впишешь. |
| Автор: JSman 19.7.2007, 22:16 |
| так эти 2 разных хоста тебе принадлежат? |
| Автор: Alx 19.7.2007, 23:27 |
| JSman, ну как бы да.. я кстати заметил, что у окна есть доступ к self.parent.frames может с этим поколдовать? |
| Автор: JSman 20.7.2007, 00:04 |
| нет. смотри. для решения проблемы есть 2 способа на мой взгляд. 1) как я предлагал, серверное решение 2) в главном фрейме при событиии копируешь в клипбоард в определенном формате типа текст, например " data^varname^vardata ". а в другом фрейме кидаешь таймер на проверку клипбоарда и применяешь |
| Автор: Alx 20.7.2007, 00:22 |
| JSman, ну клипбоард это только в винде будет работать.. а можешь поподробнее рассказать про серверное решение? |
| Автор: JSman 20.7.2007, 00:31 |
| если у тебя чужой сервак в главном фрейме, то копируй содержимое вебстраницы с помощью php. и отображаешь ее как будто это чужой сайтик. но ты имеешь доступ к dom. да, точно, еще не забудь поставить элемент <base href="адрес вебстранички, которую копируешь" /> Добавлено через 3 минуты и 32 секунды по такому принципу я даже html шпиону в одно время писал, чтобы проверить кто, что делает у меня на компе)) |
| Автор: Alx 20.7.2007, 00:43 |
| JSman, ты меня запутал чужих нет, все свои. какой вебстраницы? главной или из ифрейма? |
| Автор: SelenIT 20.7.2007, 00:49 | ||
Alx, сорри, что встреваю, но можно уточнить смысл вот этого?
От чего это защита? |
| Автор: JSman 20.7.2007, 01:18 | ||||
хе, решил еще раз прочитать вообще о чем речь идет))
итак, если исходить из конкретного поста, то решение такое создай файл index.hta
запусти ------------------------------------------------------------------------------- давай так) чтобы я не запутывал, объясни мне по-детски, что конкретно ты хочешь |