Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / GoogleMap (Javascript API) & Permission denied to call method XMLHttpRequest.open? / 11 сообщений из 11, страница 1 из 1
30.05.2008, 01:29
    #35344612
javacoder2008
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GoogleMap (Javascript API) & Permission denied to call method XMLHttpRequest.open?
Защита по умолчанию не позволяет делать AJAX-запросы к сайтам отличным от сайта, откуда загружена HTML-страница.
Например FF ругается: Permission denied to call method XMLHttpRequest.open

Но как работает Google Maps API?
Фактически загрузка Javascript API c сайта Google'а и его использование, позволяют обращаться к сайту Google'а со страниц, загруженных с разных серверов(доменов).

Знающие люди, как это работает?
Внедрен гугловский плагин в каждый браузер(в инсталляшку), позволяющий без проблем обращаться только к map.google.com?
Спасибо.
...
Рейтинг: 0 / 0
30.05.2008, 02:43
    #35344633
IDVsbruck
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GoogleMap (Javascript API) & Permission denied to call method XMLHttpRequest.open?
А попробовать почитать у самого Google'а слабо?

Вот что он мне выдал для вставки в свой проект (комменты выкинул):
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
<div id="mapsearch"><span style="color:#676767;font-size:11px;margin:10px;padding:4px;">Loading...</span></div>
<script src="http://maps.google.com/maps?file=api&v=2&key=ABQIAAAADF_058Dbb8Rwbin96FPCHBSYNCmfnRIkYBuuYnW_Z4hRtjuV0xTLoNHZjAO6BeiZNkt3MCZ3ti66MA" type="text/javascript"></script>
<script src="http://www.google.com/uds/api?file=uds.js&v=1.0&source=uds-msw&key=ABQIAAAADF_058Dbb8Rwbin96FPCHBSYNCmfnRIkYBuuYnW_Z4hRtjuV0xTLoNHZjAO6BeiZNkt3MCZ3ti66MA" type="text/javascript"></script>
<style type="text/css">@import url("http://www.google.com/uds/css/gsearch.css");</style>
<script type="text/javascript">window._uds_msw_donotrepair = true;</script>
<script src="http://www.google.com/uds/solutions/mapsearch/gsmapsearch.js?mode=new" type="text/javascript"></script>
<style type="text/css">@import url("http://www.google.com/uds/solutions/mapsearch/gsmapsearch.css");</style>
<style type="text/css">
      .gsmsc-mapDiv {height : 275px;}
      .gsmsc-idleMapDiv {height : 275px;}
      #mapsearch {width : 365px; margin: 10px; padding: 4px;}
</style>
<script type="text/javascript">
      function LoadMapSearchControl() {
            var options = {
                  zoomControl : GSmapSearchControl.ZOOM_CONTROL_ENABLE_ALL,
                                     title : "Googleplex",
                                     url : "http://www.google.com/corporate/index.html",
                                     idleMapZoom : GSmapSearchControl.ACTIVE_MAP_ZOOM,
                                     activeMapZoom : GSmapSearchControl.ACTIVE_MAP_ZOOM}
            new GSmapSearchControl(document.getElementById("mapsearch"), "1600 Amphitheatre Parkway, Mountain View, CA", options);
      }
      GSearch.setOnLoadCallback(LoadMapSearchControl);
</script>

Это гаджет. Используются только совершенно легальные и документированные возможности.
Возможно, если ты изучишь все полученные скрипты, ты больше поймешь ...
...
Рейтинг: 0 / 0
30.05.2008, 07:16
    #35344681
LINUXER
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GoogleMap (Javascript API) & Permission denied to call method XMLHttpRequest.open?
скрипты изучать совсем необязательно...
достаточно того что они загружаются прямо с гугля. А значит могут слать суда запросы.


Можно юзать и локальные скрипты, через прокси.
...
Рейтинг: 0 / 0
30.05.2008, 11:28
    #35345278
javacoder2008
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GoogleMap (Javascript API) & Permission denied to call method XMLHttpRequest.open?
IDVsbruckА попробовать почитать у самого Google'а слабо?

......................................
Это гаджет. Используются только совершенно легальные и документированные возможности.
Возможно, если ты изучишь все полученные скрипты, ты больше поймешь ...
Скрипты изучал. Только в одном месте нашел инициализацию объекта XMLHttpRequest.
Буду признателен, если укажешь "совершенно легальные и документированные возможности" для этого, узкого места: а именно использование XMLHttpRequest в GoogleMapAPI, позволяющего загружать данные(через Javascript) с сайта гугля на страницах, загруженных с других доменов.

LINUXERскрипты изучать совсем необязательно...
достаточно того что они загружаются прямо с гугля. А значит могут слать суда запросы.

Можно юзать и локальные скрипты, через прокси.

Тоже так думал, но не работает.
Скрипт загруженный с другого домена позволяет загружать данные только с домена, откуда загружена страница.
Проверял и на локалхост'е (разные домены на 127.0.01) и через удаленный сервер.

Для примера привожу тестовый код:

HTML:
Код: plaintext
1.
2.
3.
4.
5.
6.
<html>
<body>
<script type="text/javascript" src="http://test/testAjax.js"></script>
<input type="button" onclick="getData('http://test/testAjax.js');"/>
<pre id="info" style="width:100%;height:400px;overflow:auto;border:1px solid black;"></pre>
</body>
</html>

Javascript (testAjax.js):
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
function getData (url, targetArea) {
try {
    var query = null;
    if(window.XMLHttpRequest) {
        var query = new XMLHttpRequest;
    } else if(typeof ActiveXObject != "undefined") {
        var query = ActiveXObject("Microsoft.XMLHTTP")
    } else {
        alert("Can't initializate XMLHttpRequest object!");
        return;
    }
    query.onreadystatechange = function() {
        onLoad(query);
    }
    query.open('POST', url, true);
    query.send('');
} catch (err) {
    alert("ERROR:" + err);
}
}
function onLoad(r) {
    if (r.readyState == 4) {
        if (r.status == 200) {
            var area = document.getElementById("info"); 
            if (area) {
                area.innerHTML = r.responseText;     
            }        
        } else {
            alert("ERROR HTTP Request:" + req.status);
        }
    }
}

т.е. например в hosts указано следующее:
127.0.0.1 localhost
127.0.0.1 test

если загружать с test, то работает, с localhost - не работает
и наоборот, если изменить в HTML с test на localhost
...
Рейтинг: 0 / 0
30.05.2008, 11:36
    #35345308
ShSerge
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GoogleMap (Javascript API) & Permission denied to call method XMLHttpRequest.open?
javacoder2008Скрипт загруженный с другого домена позволяет загружать данные только с домена, откуда загружена страница.
Ты же сам себе ответил.
...
Рейтинг: 0 / 0
30.05.2008, 12:23
    #35345479
javacoder2008
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GoogleMap (Javascript API) & Permission denied to call method XMLHttpRequest.open?
ShSergeТы же сам себе ответил.
Это был ответ на предыдущий пост, который утверждал, что скрипт может загружать данные с сервера откуда был загружен.

А вопрос так и остается: как GoogleMapAPI делает это?

например с сайта www.sql.ru, загружен HTML-код:

Код: plaintext
1.
2.
3.
.....
<script src="http://maps.google.com/?bla-bla-bal"></script>
.......

и вот этот javascript-код может грузить данные не только с сайта www.sql.ru , но и c maps.google.com .

Если это плагины гугля, работающие на уровне WindowAPI (и встроенные на уровне инсталляшек браузеров, т.е. не устанавливался дополнительный софт к браузерам и не было изменения дефалтовых настроек браузеров), тогда все понятно.

Если это что-то другое, то что???
...
Рейтинг: 0 / 0
30.05.2008, 12:29
    #35345501
ShSerge
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GoogleMap (Javascript API) & Permission denied to call method XMLHttpRequest.open?
Да какая разница откуда грузится скрипт? Хоть из деревни Пупкино! Исполняется-то он на клиенте. Аякс не умеет работать с данными домен которых отличен домена загруженной страницы. Ну и всё тут. Чего не понятно? Хочешь аяксить другие домены - напиши на сервере скрипт типа читать-писать и грузи свою страницу с него.
...
Рейтинг: 0 / 0
30.05.2008, 12:33
    #35345518
LINUXER
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GoogleMap (Javascript API) & Permission denied to call method XMLHttpRequest.open?
ShSergeДа какая разница откуда грузится скрипт? Хоть из деревни Пупкино!
да, увы это так=(

а гугль, по ходу, юзает JSONP.
...
Рейтинг: 0 / 0
30.05.2008, 12:51
    #35345600
javacoder2008
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GoogleMap (Javascript API) & Permission denied to call method XMLHttpRequest.open?
ShSergeДа какая разница откуда грузится скрипт? Хоть из деревни Пупкино! Исполняется-то он на клиенте. Аякс не умеет работать с данными домен которых отличен домена загруженной страницы. Ну и всё тут. Чего не понятно? Хочешь аяксить другие домены - напиши на сервере скрипт типа читать-писать и грузи свою страницу с него.

Внимательно прочитал предыдущий пост?
1) HTML загружен с sql.ru
2) в нем код <script ....> , который грузит javascript GoogleMapAPI с maps.google.com
3) этот код грузит данные с maps.google.com (не с sql.ru )
...
Рейтинг: 0 / 0
30.05.2008, 13:07
    #35345658
javacoder2008
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GoogleMap (Javascript API) & Permission denied to call method XMLHttpRequest.open?
LINUXERа гугль, по ходу, юзает JSONP.

Спасибо за наводку на JSONP, понял как это работает.
...
Рейтинг: 0 / 0
30.05.2008, 19:22
    #35346644
ShSerge
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GoogleMap (Javascript API) & Permission denied to call method XMLHttpRequest.open?
Ага. Эту фишку я юзал, когда ещё не было такого слова "AJAX" и считалось дурным тоном, когда после загрузки твоя страничка на сервер лазает. Кстати, все тэги, у которых есть "src" - img, например - та же фишка. Я думал речь идёт только о реквесте. Извини.
...
Рейтинг: 0 / 0
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / GoogleMap (Javascript API) & Permission denied to call method XMLHttpRequest.open? / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]