Что-то не получается у меня запустить простенький sample:

Выделить код

Код:

<html><head><body>

<script type="text/javascript">
<!--
req = new XMLHttpRequest();
req.open('HEAD', 'http://www.rambler.ru/', false); 
req.send(null);
if(req.status == 200)
  alert("Rambler is live!");
-->
</script>

</body></html>

Ругаются на то, что нет доступа к XMLHttpRequest.open
Подскажите, пожалуйста, что делаю не так?

Цитата с Google Groups: AJAX World

The problem is you can't perform cross-domain requests (that is,
accessing a page on a domain that is not the one where original page
came from ) with XMLHttpRequest object. Security reasons....
Solution: use a server side proxy (in the same domain that the page)
to fetch the other pages and then output then.

Ну там еще пара решений написаны - разбирайся %)

Непривилегированным скриптам запрещены запросы к другим доменам в целях безопасности пользователя.

Спасибо! Буду делать привилегированый скрипт =( Очередное расширение ... Задолбался ...

O.Nick пишет

Спасибо! Буду делать привилегированый скрипт =( Очередное расширение ... Задолбался ...

Дорогой O.Nick, у меня точно такая же проблема! Подскажи - а как  ентот привилегированый скрипт делается, хотя бы ссылку..

а как  ентот привилегированый скрипт делается

в расширении

INFOMAN пишет

а как  ентот привилегированый скрипт делается

в расширении

INFOMAN, выдается ошибка "Запрещено вызывать метод XMLHttpRequest.open". С "родного" сервера берет нормально, а с другого не хочет. Другой находится в той же локальной сети, DNS не используется, как я понял каждый сервер "отдельно стоящий".. Как ни странно, но с компа коллеги - тоже все нормально: берет с другого сервера, к сожалению, я не имею сейчас доступа к тому компу чтобы сравнить настройки. Вы встречались с подобной ошибкой ? В чем может быть дело ?

INFOMAN пишет

а как  ентот привилегированый скрипт делается

в расширении

вроде ещё в подписанном jar'е.

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

Добавлено Втр 19 Сен 2006 15:05:53 :

Anton пишет

вроде ещё в подписанном jar'е.

Anton, дело получается не в этом. С компьютера другого человека все работает. Значит, дело не в системе безопасности. Тогда в чем? Как такие вещи можно отлаживать?

Да в безопасности всё дело, на компьютере коллеги, скорее всего нужные разрешения имеются.
Можно поставить

Выделить код

Код:

netscape. security. PrivilegeManager. enablePrivilege ("UniversalXPConnect");

перед

Выделить код

Код:

req = new XMLHttpRequest();

и всё завернуть в функцию. Тогда будет работать.

Anton пишет
Выделить код

Код:

netscape. security. PrivilegeManager. enablePrivilege ("UniversalXPConnect");

Anton, спасибо - лед тронулся! Локальный тестовый файл - работает. Правда, задает вопрос: мол, запрошены дополн. привелегии, что будем делать.. Жму "Разрешить"  - и  подтягивает. Но! когда я тяну файл с сервера (он приходит в XML виде а потом одевается по  XMLT), то после нажатия кнопки на строке с привелегиями мне говорят, что в запрошенных привелегиях было отказано !! ПОЧЕМУ? 2 разных поведения одного и того же FF навевает на мысль о разных свойствах самих закачек. Anton, что скажешь ?

Видимо, UniversalXPConnect не даёт привилегий на кросс-сайтовое чтение. Может быть, стоит сходить по ссылке во втором сообщении темы, почитать, там предлагают UniversalBrowserRead.

Антон, неимоверным напряжением всех мыслительных сил выяснили в чем беда была, может и тебе когда пригодится: моя страничка на клиента закачивалась по https, а ajax потом ломился по http! Должны быть одиннаковые протоколы: либо оба http, либо https.. Кто б мог подумать? Спасибо тебе еще раз!  :beer:

luch пишет

Антон...  :beer:

А ведь не за что.

+1 за поиск решения

А вот можно вопрос?

У меня скрипт грузится с http://localhost:1000/script.js

Запрос у меня идет на http://localhost:1000/aaa.php

Но все равно требует привелегий.
netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");


что делать?

Beowulf
Неважно откуда загружен скрипт. Важно откуда загружена сама страница.

Дык тоже с http://localhost:1000/

INFOMAN пишет

а как  ентот привилегированый скрипт делается

в расширении

Эм.. а можно насчёт этого поподробнее? Как подписать скрипт?
Кстати, вот здесь - http://docs.sun.com/source/816-6409-10/sec.htm - наткнулся на на некое

Выделить код

Код:

document.domain = "company.com";

что это означает?

что это означает?

http://developer.mozilla.org/en/docs/DOM:document.domain
и далее на
http://www.mozilla.org/projects/security/components/same-origin.html

http://developer.mozilla.org/en/docs/DOM:document.domain
и далее на
http://www.mozilla.org/projects/security/components/same-origin.html

Неплохо, только вот не пойму, как это применить в аяксе..
Дан сайт, расположенный на www.mydomen.ru, который через аякс обращается к sub.mydomen.ru:

Выделить код

Код:

<script type="text/javascript" src="js/prototype.js"></script>
<script type="text/javascript"><!--
function pokupka() {
var url = 'http://sub.mydomen.ru/cent.php';
var params = '?cn=1215154';
var ajax = new Ajax.Updater (
{success: 'tccont'},
url,
{method: 'get',
parameters: params,
onFailure: centerror}
);
}
function centerror(request) {
$('tccont').innerHTML = "Ошибка";
}
// --></script>
Выделить код

Код:

<form>
<a href="javascript://" onclick="pokupka();">Купить</a>
<div id="tccont"></div>
</form>

Естественно, политика безопасности это не позволяет. Но я так понимаю, document.domain позволяет решить такую проблему, если домен (не поддомен) общий?