Как обойти политику одного и того же происхождения для стороннего сайта 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 должны знать, что они делают, и поддерживать его.
здесь является реальной базовой записью о том, как она работает