AJAX-запросы JSON/JSONP к Disqus API получают ответ 400

Я пытаюсь получить последние комментарии на моем сайте/форуме через Disqus API. Мой запрос работает, когда я пробую его в адресной строке, но получаю 400 ошибок, когда пытаюсь сделать вызовы AJAX с помощью JQuery.

Мой запрос JSON:

$.ajax({
type: 'GET',
url: "https://disqus.com/api/3.0/forums/listPosts.json",
data: { api_key: 'my_public_key', forum : 'my_forum_name'},
cache: false,
dataType: 'json',
success: function (result) {
  console.log("SUCCESS");
}
});

Когда я пытаюсь выполнить вышеуказанный запрос JSON, я получаю сообщение об ошибке в консоли, указывающее, что заголовок Access-Control-Allow-Origin не установлен в ответе сервера. Для меня это говорит о том, что Disqus не настроен для поддержки запросов CORS, но в документации указано, что Disqus поддерживает JSON в качестве типа запроса.

Мой запрос JSONP:

$.ajax({
type: 'GET',
url: "https://disqus.com/api/3.0/forums/listPosts.jsonp",
data: { api_key: 'my_public_key', forum : 'my_forum_name'},
cache: false,
dataType: 'jsonp',
success: function (result) {
  console.log("SUCCESS");
}
});

Когда я пытаюсь выполнить вышеуказанный запрос JSONP по этому руководство, предоставленное Disqus, я все еще получаю 400 Bad Request в качестве ответа.

Когда я делаю оба запроса с curl, используя один и тот же сервер разработки, я вижу правильный ответ в формате JSON или JSONP в теле ответа, хотя в заголовке указана ошибка 400. (Однако на вкладке сети Chrome указано, что «для этого запроса нет доступных данных ответа», когда я выделяю запрос там — возможно, мне нужно быть на канале разработчиков Chrome, чтобы увидеть ответ.)

Я пробовал оба запроса на нескольких разных доменах и каждый раз убеждался, что домены, с которыми я тестирую запросы, перечислены в Disqus как доверенные домены, хотя я не уверен, что это имеет значение.

Я знаю, что прокси-сервер, вероятно, решит проблему JSON, но, поскольку Disqus заявляет, что они поддерживают запросы JSON и JSONP, я бы предпочел не делать этого. Что еще я могу попробовать?


person user3594015    schedule 22.07.2014    source источник


Ответы (2)


В Disqus есть поле для указания того, какие URL-адреса могут использовать ваш открытый ключ Disqus (disqus.com/api/applications -> Нажмите на свое приложение -> Перейти на вкладку настроек), которое отличается от поля доверенных доменов, которое находится в дополнительных настройках панель администратора Disqus. Добавление URL-адреса моего сайта к первому устранило проблему.

person user3594015    schedule 15.08.2014

Вы пытались добавить '?callback=?' на URL? У меня была похожая ситуация, но с API, который мы не смогли настроить. Как только этот параметр был добавлен, мы смогли получить правильный ответ.

person GKD    schedule 28.02.2017
comment
Возможно, вы захотите добавить это как комментарий, а не ответ. На самом деле это не дает конкретного ответа на вопрос. - person The_Cthulhu_Kid; 28.02.2017