Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.02.2016, 15:56   #1
Valtasaar
 
Аватар для Valtasaar
 
Регистрация: 27.11.2015
Сообщений: 9
По умолчанию AJAX запрос с авторизацией

Доброго всем!
Пытаюсь получить данные с сайта, на котором не зарегистрирован, но есть токен.

Код:
$.ajax({
        beforeSend: function (xhr) {
            xhr.setRequestHeader ('Authorization', 'токен');
        },
        headers: {
            'Authorization': 'токен'
        },
        type: 'get',
        url: "урл",
        dataType: 'json',
        success: function(results){
            console.log(results);
        }
    })
Ошибка получается:
Цитата:
Запрос из постороннего источника заблокирован: Политика одного источника запрещает чтение удаленного ресурса на "УРЛ". (Причина: отсутствует заголовок CORS 'Access-Control-Allow-Origin').
Как правильно этот запрос сделать?
Valtasaar вне форума Ответить с цитированием
Старый 13.02.2016, 23:28   #2
CodeNOT
Форумчанин
 
Аватар для CodeNOT
 
Регистрация: 08.11.2010
Сообщений: 593
По умолчанию

Собственно вы из браузера и не сможете отослать запрос, если на стороне сервера не прописаны заголовки, в частности он хочет Access-Controll-Allow-Origin: *

решение простое, проксировать запрос, на тот же php, там с помощью curl получить авторизацию и через нее дальше уже слать запросы
CodeNOT вне форума Ответить с цитированием
Старый 14.02.2016, 12:50   #3
Valtasaar
 
Аватар для Valtasaar
 
Регистрация: 27.11.2015
Сообщений: 9
По умолчанию

Цитата:
Сообщение от CodeNOT Посмотреть сообщение
Собственно вы из браузера и не сможете отослать запрос, если на стороне сервера не прописаны заголовки, в частности он хочет Access-Controll-Allow-Origin: *

решение простое, проксировать запрос, на тот же php, там с помощью curl получить авторизацию и через нее дальше уже слать запросы
а без php? Дело в том, что данные получаются от RESTful API при помощи ангуляра или жиквайера и мне нужно тоже получить оттуда данные.

Заменил дата тайп на jsonp, ошибка ушла. Но полученные данные никак не идентифицируются. Появилась ошибка GET.
Valtasaar вне форума Ответить с цитированием
Старый 14.02.2016, 17:52   #4
Fenex
Форумчанин
 
Аватар для Fenex
 
Регистрация: 15.02.2012
Сообщений: 823
По умолчанию

Если API расчитан на отдачу данных в сторонние сервисы, то по идеи заголовок кроссдоменного запроса должен отсылать.

А сам API сервиса поддерживает отдачу в формате jsonp?

Вы никак не сможете сделать запрос с одного домена на другой, пока последний специально не разрешит этого сделать (путём добавления вашего домена в заголовок Access-Controll-Allow-Origin).
^-.-^ My GitHub
Fenex вне форума Ответить с цитированием
Старый 14.02.2016, 18:13   #5
Naive
Раздолбайских Дел
Старожил
 
Аватар для Naive
 
Регистрация: 22.05.2009
Сообщений: 3,828
По умолчанию

можно в браузере поставить разрешение на кроссдоменку)
Alar, верни репу!
Naive вне форума Ответить с цитированием
Старый 14.02.2016, 18:23   #6
Fenex
Форумчанин
 
Аватар для Fenex
 
Регистрация: 15.02.2012
Сообщений: 823
По умолчанию

Цитата:
Сообщение от Naive Посмотреть сообщение
можно в браузере поставить разрешение на кроссдоменку)
Радикальное решение, однако.
Ещё можно сделать расширение, которое будет проксировать конкретные запросы в браузере: никакого сервера, никакого PHP, никакой чепухи :D.
^-.-^ My GitHub
Fenex вне форума Ответить с цитированием
Старый 15.02.2016, 15:23   #7
Valtasaar
 
Аватар для Valtasaar
 
Регистрация: 27.11.2015
Сообщений: 9
По умолчанию

Немного видоизменил код, ошибка пропала

Код:
$.ajax({
        beforeSend: function (xhr) {
            xhr.setRequestHeader ('Authorization', 'токен');
        },
        headers: {
            'Authorization': 'токен'
        },
        type: 'get',
        url: "урл",
        crossDomain: true,
        dataType: 'jsonp',
        success: function(results){
            console.log(results);
        }
    })
Но соединение не устанавливается:
Изображения
Тип файла: jpg conn.jpg (25.1 Кб, 126 просмотров)
Valtasaar вне форума Ответить с цитированием
Старый 15.02.2016, 16:38   #8
CodeNOT
Форумчанин
 
Аватар для CodeNOT
 
Регистрация: 08.11.2010
Сообщений: 593
По умолчанию

судя по ошибке 405 метод не поддерживается
CodeNOT вне форума Ответить с цитированием
Старый 15.02.2016, 16:38   #9
CodeNOT
Форумчанин
 
Аватар для CodeNOT
 
Регистрация: 08.11.2010
Сообщений: 593
По умолчанию

если запрос ручками послать он проходит?
CodeNOT вне форума Ответить с цитированием
Старый 15.02.2016, 17:40   #10
Valtasaar
 
Аватар для Valtasaar
 
Регистрация: 27.11.2015
Сообщений: 9
По умолчанию

Цитата:
Сообщение от CodeNOT Посмотреть сообщение
судя по ошибке 405 метод не поддерживается
Метод это тип получаемых данных?

Цитата:
Сообщение от CodeNOT Посмотреть сообщение
если запрос ручками послать он проходит?
Стесняюсь спросить, это как?

Если вернуть дататайп в json, то получается ошибка
Цитата:
Причина: отсутствует заголовок CORS 'Access-Control-Allow-Origin'
И:
Изображения
Тип файла: jpg conn2.jpg (28.7 Кб, 122 просмотров)
Тип файла: jpg conn2.1.jpg (26.3 Кб, 123 просмотров)

Последний раз редактировалось Valtasaar; 15.02.2016 в 17:43.
Valtasaar вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ajax+php запрос Alex2213 JavaScript, Ajax 2 27.07.2015 20:30
Ajax запрос (jQuery) Newpitbull JavaScript, Ajax 3 14.04.2012 21:25
ajax запрос в jquery Qaliti JavaScript, Ajax 7 06.03.2012 23:20
Ajax Запрос moqa JavaScript, Ajax 10 28.12.2011 10:46
Повторяющийся ajax запрос aferistz JavaScript, Ajax 1 06.07.2011 17:57