Как обойти политику одного и того же происхождения для стороннего сайта https?

У меня есть сайт http://, которому необходимо обратиться к стороннему JSON API, который отображается на сайте https://. Я прочитал Способы обхода политики одного и того же происхождения, но, похоже, методы, описанные там, не подходят для меня:

  • Метод document.domain - работает только на субдоменах.
  • Метод совместного использования ресурсов Cross-Origin - требует взаимодействия с сервером.
  • Метод window.postMessage - кажется, требуется открыть всплывающее окно?
  • Метод обратного прокси-сервера. Возможное решение, но кажется слишком сложным для настройки.
  • http://anyorigin.com - похоже, не поддерживает SSL.

Это так? Должен ли я реализовать решение 4, которое кажется довольно сложным, или я что-то не хватает?

Ответ 1

Извините, похоже, что anyorigin.com поддерживает https.

Причина, по которой я наивно думал, что это не так, объясняется тем, что API возвращает JSON, и я думал, что на самом деле я просто получу текстовый ответ (как в моих тестах с использованием anyorigin.com на google.com). Когда он вернул только object, я понял, что что-то было сломано.

Кажется, объект просто возвращает обработанный JSON, так что я готов идти!

Обновление - anyorigin.com перестает работать с некоторыми сайтами https через несколько недель после того, как я разместил это, поэтому я пошел дальше и написал whateverorigin.org, альтернатива openor для anyorigin.

Ответ 2

Вы можете использовать Ajax-cross-origin плагин jQuery. С помощью этого плагина вы используете перекрестный домен jQuery.ajax().

Это очень просто использовать:

    $.ajax({
        crossOrigin: true,
        url: url,
        success: function(data) {
            console.log(data);
        }
    });

Вы можете прочитать больше здесь: http://www.ajax-cross-origin.com/

Ответ 3

JSONP должен быть в вашем списке, и выше. В значительной степени стандарт. Для этого требуется взаимодействие с сервером, но большинство API должны знать, что они делают, и поддерживать его.

здесь является реальной базовой записью о том, как она работает