Ajax, используя https на странице http

Мой сайт использует протокол http и https; это не влияет на содержание. Мой сайт использует jQuery ajax-вызовы, которые также заполняют некоторые области на странице.

Теперь я хотел бы делать все вызовы ajax через https. (пожалуйста, не спрашивайте меня, почему :)) Когда я нахожусь на странице с протоколом https, запросы ajax работают. Когда я нахожусь на странице с протоколом http, я получаю сообщение об ошибке JavaScript: Доступ к ограниченному URI запрещен

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

Тем не менее, я хочу, чтобы все вызовы ajax были https, и вызывать их на странице, которая обслуживалась через http. Есть ли обходной путь для достижения этого (какой-то JSON / прокси-решение?), Или это просто невозможно?

 Miles27 мар. 2014 г., 00:03
Почему тебе нужен AJAX с HTTPS .....
 Chris Moschini13 апр. 2011 г., 18:30
Они специально сказали: «Пожалуйста, не спрашивайте меня, почему».
 scheibk09 июл. 2009 г., 21:22
Почему не соответствует ajax протоколу загрузки страницы?
 kentor05 февр. 2015 г., 23:00
Например, для более динамичной формы оформления заказа, которая подключается к платежному шлюзу, такому как PayPal в фоновом режиме, чтобы люди могли видеть, что происходит .. Только одна из дополнительных возможностей

Ответы на вопрос(6)

Большинство библиотек JS делают это так же просто, как и другие вызовы AJAX, но внутренне используют iframe для выполнения запроса.

если вы не используете JSON для своей полезной нагрузки, вам придется развернуть свой собственный механизм вокруг iframe.

Лично я бы просто перенаправил страницу http: // на https: // one

 Dzeimsas Zvirblis13 мая 2016 г., 22:04
Ради моего здравомыслия я собираюсь пойти с твоим последним вариантом ... Просто перенаправить наhttps:
 user13586309 июл. 2009 г., 22:18
hmm я пробовал jquery .ajax с установленным параметром jsonp: jsonp_callback, но все равно та же ошибка js.
 Javier10 июл. 2009 г., 05:47
Может быть, вы должны добавить параметр обратного вызова в URL
 Adam Brenecki02 янв. 2014 г., 04:49
@ user135863 Конечная точка, в которую вы отправляете запросподдержк Во-первых, JSONP?

Добавьте заголовок Access-Control-Allow-Origin с сервера

Access-Control-Allow-Origin: https://www.mysite.com

http: //en.wikipedia.org/wiki/Cross-Origin_Resource_Sharin

 SimonSimCity27 сент. 2011 г., 14:08
Отличный ответ - но не поддерживается некоторыми используемыми браузерами, такими как Opera (совсем не поддерживается) и Internet Explorer (поддерживается начиная с версии 8) Caniuse.com / # поиск = CORS
 gitaarik05 мар. 2014 г., 12:07
Похоже, Opera сейчас это поддерживает: En.wikipedia.org / вики / ... Только не Opera Mini, хотя ...

http: //example.com может разрешить другой VirtualHost, чемhttps: //example.com (который, так как заголовок Host не отправляется, отвечает по умолчанию для этого IP-адреса), поэтому эти два обрабатываются как отдельные домены и, таким образом, подпадают под ограничения междоменного JS.

JSON обратные вызовы может позволить тебе избежать этого.

Создайте скрытый iFrame с данными, которые вы хотели бы опубликовать. Поскольку вы все еще контролируете этот iFrame, то же происхождение не применяется. Затем отправьте форму в этом iFrame на страницу ssl. Страница ssl затем перенаправляет на страницу не ssl с сообщениями о состоянии. У вас есть доступ к iFrame.

 srquinn24 мая 2013 г., 20:09
Это можно сделать, но не забудьте установить P3P-заголовки, если вам нужны сеансовые куки-файлы из iFrame ... в противном случае MSE скажет "ну-а-а-а"

TLS вместе с некоторыми Flash для обработки фактических междоменных запросов:

http: //github.com/digitalbazaar/forge/blob/master/READM

Короче говоря, Forge позволит вам делать XmlHttpRequests с веб-страницы, загруженной через http, на сайт https. Вам нужно будет предоставить файл междоменной политики Flash через ваш сервер, чтобы включить междоменные запросы. Ознакомьтесь с сообщениями в блоге в конце README, чтобы получить более подробное объяснение того, как это работает.

Однако следует отметить, что Forge лучше подходит для запросов между двумя разными https-доменами. Причина в том, что существует потенциальная атака MiTM. Если вы загрузите JavaScript и Flash с незащищенного сайта, это может быть скомпрометировано. Наиболее безопасное использование - это загрузить его с защищенного сайта, а затем использовать для доступа к другим сайтам (безопасным или иным).

ajax-запросы в / из фрейма через некоторый мост, это взлом, но это может сработать (не уверен, будет ли оно накладывать те же ограничения доступа с учетом безопасного контекста ). В противном случае локальный http-прокси для перенаправления запросов (как и любые междоменные вызовы) будет приемлемым решением.

 srquinn24 мая 2013 г., 20:10
Это можно сделать, но не забудьте установить P3P-заголовки, если вам нужны сеансовые куки-файлы из iFrame ... в противном случае MSE скажет "ну-а-а-а"
 JGFMK17 февр. 2011 г., 15:13
После прочтения этой темы я буду придерживаться JSONP Dslreports.com / форум / r21425467-IFrame-С-HTTPS-на-HTTP-страницы

Ваш ответ на вопрос