2011-10-06 1 views
14

У меня есть сайт http://, которому необходимо обратиться к стороннему API-интерфейсу JSON, который выставлен на сайте https://. Я прочитал Ways to circumvent the same-origin policy, но мне кажется, что способы, описанные здесь, не подходят для меня:Как обойти политику одного и того же происхождения для стороннего сайта https?

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

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

+3

не могли бы вы скручивание результат с другого сайта с обычной PHP-страницы на свой собственный домен, а затем захватить JSON с этой страницы PHP? –

+0

Не будет [JSONP] (http://en.wikipedia.org/wiki/JSONP) работать здесь? – jwueller

+0

Я уверен, что anyorigin.com поддерживает SSL. Попробуйте выбрать «https: // test.kems.net /», например, это работает отлично. –

ответ

12

К сожалению, кажется, что anyorigin.com делает Поддержку HTTPS.

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

Похоже, что объект просто возвращает разобранный JSON, поэтому я должен идти!

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

+0

@RobW - пожалуйста, откройте вопрос о github. Я буду исследовать это в пятницу (ничего не могу пообещать раньше) - https://github.com/ripper234/Whatever-Origin – ripper234

+0

эти методы не будут работать, если удаленный сервер возвращает другой контент на основе того, кто что-то запрашивает. Например, YouTube возвращает веб-страницу для видео, из которой вы можете извлечь URL-адрес воспроизведения, например, для MP4, который будет работать (скажем, в качестве файла .mp4), если он используется от вызывающего, а не от клиента вызывающего абонента (когда вызывающий прокси) –

+0

** Я написал ответ на этот вопрос здесь: [Загрузка страницы перекрестного домена html с помощью jQuery AJAX] (http://stackoverflow.com/questions/15005500/loading-cross-domain-html-page-with -jquery-ajax/17299796 # 17299796) ** - последний, поддерживает https_ – jherax

0

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

here является реальной основной рецензией, как это работает

3

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

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

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

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

 Смежные вопросы

  • Нет связанных вопросов^_^