Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 18.11.2010, 04:44
Интересующийся
Отправить личное сообщение для ajon Посмотреть профиль Найти все сообщения от ajon
 
Регистрация: 06.06.2010
Сообщений: 25

Кросдоменный запрос (точнее запрос к себе с другого)
Есть site1... на нём используется js и всё хорошо и здорово.
Вставил на site2 <script src='site1.ru/script.js'>... всё подгрузилось и всё замечательно...

В скрипте site1.ru/script.js делаются AJAX запросы (безо всяких библиотек) на скрипт site1.ru/api.php... уже перерыл кучу вских документаций, но не могу сообразить, как сделать, чтобы эти запросы работали и на site2.ru (я ведь по идее уже подгрузил скрипт с site1)

функции, которой я делаю запросы к site1.ru/api.php:
function ajax_request()
    { //на всякий случай выкладываю
    var req;
    if(window.XMLHttpRequest) req = new XMLHttpRequest();
    else if(window.ActiveXObject)
        {
        try { req = new ActiveXObject("Msxml2.XMLHTTP"); }
        catch(e) { req = new ActiveXObject("Microsoft.XMLHTTP"); }
        }
    return req;
    }

function ajax_json(post, callback)
    {
    var req = ajax_request(); //инициируем ajax запрос
    url = 'http:/site1.ru/api.php'; //пробовал и так и '/api.php'
    req.open('POST', url, true);
    req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    
    req.onreadystatechange=function()
        {
        if (req.readyState == 4)
            {
                var result = eval ( '('+ req.responseText +')'); //знаю, знаю....
                if (result.status == "OK" && callback != false) callback(result);
                else return false;
            }
        }
    req.send(post); //отправляем запрос
    }

помогите пожалуйста разобраться, как такое сделать...
Ответить с цитированием
  #2 (permalink)  
Старый 18.11.2010, 04:51
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

Сообщение от ajon
как сделать, чтобы эти запросы работали и на site2.ru (я ведь по идее уже подгрузил скрипт с site1)
что за глупость?
домен-то остался тем же у документа.
по вашей логике выходит не нужно ограничение, так как можно запросить JS_код с другого сайта, а потом работать с чужим сайтом как со своим родным.

кстати, ваша подпись весьма лжива
ведь по-вашему вопросу написано уже много материалов
и судя по общему формату вопроса, вы ничего из этого не читали
http://javascript.ru/ajax/cross-domain-scripting
Ответить с цитированием
  #3 (permalink)  
Старый 18.11.2010, 04:58
Интересующийся
Отправить личное сообщение для ajon Посмотреть профиль Найти все сообщения от ajon
 
Регистрация: 06.06.2010
Сообщений: 25

И этот материал, и многие другие уже прочитал не один раз...

На site2 я подгружаю скрипт с site1 и именно скрипт с site1 пытается сделать ajax запрос к "своему же сайту"... почему в этом случае не работает-то? то, что из скриптов site2 не работает - это понятно Same Origin Policy.

Последний раз редактировалось ajon, 18.11.2010 в 05:01.
Ответить с цитированием
  #4 (permalink)  
Старый 18.11.2010, 07:00
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,597

Потому что это не "скрипт с сайта", а "скрипт на сайте".
Js совершенно пофиг откуда вы взяли скрипт, ибо тот выполняется здесь и сейчас, в контексте данного конкретного домена на компьютере клиента.
Ответить с цитированием
  #5 (permalink)  
Старый 18.11.2010, 09:00
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от ajon
На site2 я подгружаю скрипт с site1 и именно скрипт с site1 пытается сделать ajax запрос к "своему же сайту"... почему в этом случае не работает-то? то, что из скриптов site2 не работает - это понятно Same Origin Policy.
Я ведь на своём сайте тоже могу подключить скрипт с вашего site1, у меня запросы к вашему сайту тоже должны производиться?
Ответить с цитированием
  #6 (permalink)  
Старый 18.11.2010, 14:00
Интересующийся
Отправить личное сообщение для ajon Посмотреть профиль Найти все сообщения от ajon
 
Регистрация: 06.06.2010
Сообщений: 25

машаракш!! как же всё запущено с этой same origin policy...
Понятно, значит переписываю под Iframe транспорт))

Спасибо всем за помощь!
Ответить с цитированием
  #7 (permalink)  
Старый 18.11.2010, 14:01
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

А iframe вам тут ничем не поможет по тем же самым причинам

Гуглите jsonp.
Ответить с цитированием
  #8 (permalink)  
Старый 18.11.2010, 14:11
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

Сообщение от ajon
машаракш!! как же всё запущено с этой same origin policy...
вы влохо выговариваете букву С?
а с same origin policy все как раз очень просто.
Сообщение от ajon
Понятно, значит переписываю под Iframe транспорт))
он вам тут ничем не поможет.
а что вам может помочь, я вам вообще-то уже дал ссылку.

вы не только гуглите, вместо задания тупых вопросов, но и еще не пользуетесь в полной мере ответами.
спрашивается, зачем нам распинаться, если это как горох об стенку?
уберите хотя бы подпись - не позорьтесь
Ответить с цитированием
Ответ



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

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