[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Сделать кросс-доменный GET-запрос из JS
Rigel
Добрый день!
Подскажите могу ли я каким-то образом сделать запрос к стороннему ресурсу, например google.com и проверить его доступность?

Например, делаю $.ajax запрос и если ответ 200, то гугл работает, пишу alert('гугл работает'), если запрос вернул ошибку, то не работает.

Вроде бы все просто, код такой:
$(document).ready(function() {
$.support.cors = true;
$.ajax(
type: 'GET',
url: 'http://google.com',
crossDomain: true,
complete: function(e, xhr, settings) {
if(e.status == 200) {
alert('работает!');
} else if(e.status == 404){
alert('не найдена страница');
}
}

error: function() {
alert('не работает!');
}
}
);
});

Но он возвращает статус 0, и текст ошибки "Access is denied", понятно что у гугла не выставлен заголовок Access-Control-Allow-Origin, но неужели без этого я никак не смогу проверить работает ли гугл? :)
Rigel
Invis1ble
мне бы в рамках js, к бэкэнду доступа нет.
inpost
Rigel
А про безопасность слышал? Хочешь хакерить? smile.gif))
Ты ставишь перед собой нереальные задачи.

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
Rigel
inpost
Цитата (inpost @ 11.03.2014 - 18:02)
Хочешь хакерить?

Не, просто нужна была таблица доступности некоторых внутренних сервисов smile.gif Но домены у них разные. Да еще и рисовать таблицу доступности нужно на https-странице, а сервисы расположены на http-сайтах. Думал что все это можно сделать легко, а оказалось тут без серверного кода скорее всего не обойтись sad.gif
inpost
Rigel
необходимо на каждом из серверов в htaccess прописывать ключ специальный, а именно Access-Control-Allow-Origin. Иначе никак

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
zelenuy
Rigel
AJAX не может обращаться к чужим ресурсам, в целях безопасности
Oyeme
Единственный метод который я знаю,так это делать ping на изображения.

function ping(extServer){
var ImageObject = new Image();
ImageObject.src = "http://"+extServer+"/style_images/1/logo.jpg"; //e.g. logo -- mind the caching, maybe use a dynamic querystring
if(ImageObject.height>0){
alert("Ping worked!");
} else {
alert("Ping failed :(");
}
}


ping('phpforum.ru');


AllesKlar
Цитата (zelenuy @ 11.03.2014 - 18:20)
Rigel
AJAX не может обращаться к чужим ресурсам, в целях безопасности

Уверен?

Читай об JSONP

_____________
[продано копирайтерам]
killer8080
метод скрипт кроссдоменный
http://api.jquery.com/jQuery.getScript/
только errorHandler не повесишь, нужно по таймауту ручками ловить
Rigel
inpost
Да, как раз нужно прописывать Access-Control-Allow-Origin, но как я и говорил, доступа к бэкэнду нет.
Oyeme
Да, рабочий способ. Но мне не подходит, потому как сервисы возвращают только xml sad.gif
AllesKlar
Тоже вариант, только когда со стороны сервера есть выдача json. У меня xml. Походу я в пролете sad.gif

killer8080
а как я смогу с помощью этого обратится к сервису по урлу, например http://servicename.com/service_action/
?
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.