Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 21.03.2012, 19:59
Новичок на форуме
Отправить личное сообщение для Plumper Посмотреть профиль Найти все сообщения от Plumper
 
Регистрация: 21.03.2012
Сообщений: 8

Кроссдоменный GET
добрый вечер уважаемые!
нужен один конкретный пример работающего кроссдоменного GET.
надо например с домена localhost обратится GET к например google
и поймать содержимое ответа сервера а именно innerHTML страницы в переменную или вывести на алерт.

В интернете много примеров но они либо не окончены - догадайся сам
либо по той или иной причине не работают.
например iframe и свойство window.name вроде все просто.
грузим в ифрэйм страницу callback меняет window.name(сохраняя в ней нужное инфо) возвращаемся в ифрейме в свой домен забираем из window.name данные. - так и не вышло оживить callback то он не отрабатывает то доступа нет.

script - это хорошая тема только если я правильно понял "на той" стороне должен быть скрипт "знающий о нас" и дающий нужный в контексте ответ. тогда это работает.А так...ну делается GET к серверу, в любом снифере видно что сервер выдает html, но....ответ летит мимо. поймать его не могу.

а с flash я не знаком - его не надо

мне надо обратится к серверу, например
www.site.ru/main.php - мэйн просто выдает html контекст. задача поймать его и использовать в скрипте на своем домене.

иcпользование сторонних библиотек нежелательно по 2м причинам
1. надо потратить уйму времени чтобы понять а как таки они рабтают
2. раз они на js написаны то все что в них можно сделать и без них. Я прав?

помогите пожалуйста конкретным работающим примером.

PS. можно и с библиотеками. только дайте ссылку именно на ту версию с которой пример.
фишка в том что я скачал jquery 1.7 и при проверке одного из примеров GET
где есть в тексте только $.get(); wireshark показал что в процессе выполнения слался еще и POST на некоторую страничку вконтакте. - оооочень странно. так что стронние библиотеки это конечно хорошо. но...

Последний раз редактировалось Plumper, 21.03.2012 в 20:38.
Ответить с цитированием
  #2 (permalink)  
Старый 21.03.2012, 20:48
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Из браузера получить ответ не получится.
Ответить с цитированием
  #3 (permalink)  
Старый 21.03.2012, 20:56
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

http://it.nittis.ru/iframe-xss.html
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #4 (permalink)  
Старый 21.03.2012, 21:01
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

devote,
с чужим сервером ничего не выйдет.
Ответить с цитированием
  #5 (permalink)  
Старый 21.03.2012, 21:31
Новичок на форуме
Отправить личное сообщение для Plumper Посмотреть профиль Найти все сообщения от Plumper
 
Регистрация: 21.03.2012
Сообщений: 8

так. спасибо. ушел читать
заинтересовал postMessage. если рожу рабочий пример то отпишусь. если нет - буду опять назойливо спрашивать
Ответить с цитированием
  #6 (permalink)  
Старый 21.03.2012, 22:21
Новичок на форуме
Отправить личное сообщение для Plumper Посмотреть профиль Найти все сообщения от Plumper
 
Регистрация: 21.03.2012
Сообщений: 8

и снова здравствуйте. давайте вместе разберем. механизм postMessage кажется наиболее интуитивно понятным.

<html>
<body>
<iframe src="22.html" id="iframe"></iframe>
<form id="form">
  <input type="text" id="msg" value="Ваше сообщение"/>
  <input type="submit"/>
</form>

<script>
var win = document.getElementById("iframe").contentWindow;
document.getElementById("form").onsubmit = function(){

    win.postMessage(
        document.getElementById("msg").value, "*");
    return false

}
</script>

<iframe src ="http://www.yandex.ru" onload ='win.postMessage("rrrr","*")';
</body>
</html>

Последний раз редактировалось Plumper, 21.03.2012 в 22:27.
Ответить с цитированием
  #7 (permalink)  
Старый 21.03.2012, 22:22
Новичок на форуме
Отправить личное сообщение для Plumper Посмотреть профиль Найти все сообщения от Plumper
 
Регистрация: 21.03.2012
Сообщений: 8

далее собственно файл фрейма "22.html"

<html>
<body>
<b>iframe с домена http://ilyakantor.ru</b>
<div id="test">Пришли мне сообщение!</div>
<script>
function listener(event){
    document.getElementById("test").innerHTML = event.origin + " прислал: " + event.data;
} 

if (window.addEventListener){
    window.addEventListener("message", listener,false);

} else {
    window.attachEvent("onmessage", listener);
}

</script>
</body>

</html>
Ответить с цитированием
  #8 (permalink)  
Старый 21.03.2012, 22:25
Новичок на форуме
Отправить личное сообщение для Plumper Посмотреть профиль Найти все сообщения от Plumper
 
Регистрация: 21.03.2012
Сообщений: 8

это немного измененный пример с форума http://javascript.ru/ajax/cross-origin-2


но увы если подставить

<iframe src ="http://www.yandex.ru" onload ='win.postMessage(contentWindow.document.innerHTML,"*")';


будет Access denied

предполагаю что нарушение идет от того что обращение происходит в контексте главной страницы - а она с локального домена, отличного от домена внтури iframe. простые сообщения, например текст приходят из обработчика фрейма с Яндекс, а вот содержимое нет
Если я что то упустил с посылкой сообщений укажите плиз.
Судя по всему методика не походит для задачи?

растолкуйте "хабравский" пример с window.name, что то не могу его толком понять.

Последний раз редактировалось Plumper, 21.03.2012 в 22:43.
Ответить с цитированием
  #9 (permalink)  
Старый 21.03.2012, 22:47
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

как подметил Kolyaj, от чужого сервера нельзя получить ответ, если тот не дал согласия на это.
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #10 (permalink)  
Старый 21.03.2012, 22:54
Новичок на форуме
Отправить личное сообщение для Plumper Посмотреть профиль Найти все сообщения от Plumper
 
Регистрация: 21.03.2012
Сообщений: 8

devote, а как он может его дать? ну если на мой запрос он выдает html страницу. это ли не согласие? только как принять ее.

<script type = "text/javascript" src ="http://www.ya.ru"></script>


выдает страницу полностью. только вот принять ее какими средствами языка? есть ли они?

получается целых 8 пунктов - это ни о чем? на 2х концах должны бить "мои" странички и со сторонней коммуникации построить по методу GET стредствами клиентского js нельзя?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
кроссдоменный запрос z700i Общие вопросы Javascript 10 28.10.2011 07:43
Кроссдоменный парсинг с помощью YQL iven Общие вопросы Javascript 0 24.05.2011 15:12
Управление политикой одного источника (Кроссдоменный доступ) yuri201 Internet Explorer 5 10.01.2009 13:25
Кроссдоменный GET запрос. Нужна помощь! notxcain AJAX и COMET 4 07.12.2008 20:55
Кроссдоменный аякс Snipe AJAX и COMET 7 07.12.2008 19:07