защитите xmlhttprequest от незащищенной страницы

Я хочу сделать XMLHttpRequest к безопасному uri (https://site.com/ajaxservice/) из JavaScript, работающего в незащищенной странице (http://site.com/page.htm). Я попробовал все виды сумасшедшего материала как iframes и динамические элементы сценария, до сих пор никакие не идут. Я знаю, что нарушаю 'ту же политику источника', но должен быть некоторый способ сделать эту работу.

Я возьму любой вид дурацкого решения за исключением писания протокола SSL в JavaScript.

5
задан amwinter 28 May 2010 в 02:41
поделиться

2 ответа

Это не будет работать по умолчанию из-за политики одинакового происхождения, как вы упомянули. Современные браузеры реализуют CORS (Cross-Origin Resource Sharing), который вы можете использовать, чтобы обойти эту проблему. Однако это работает только в Internet Explorer 8+, Firefox 3.5+, Safari 4+ и Chrome, и требует некоторой работы на стороне сервера. Вы можете ознакомиться со следующей статьей для дальнейшего чтения по этой теме:

Вы также можете использовать JSONP, как Dan Beam предложил в другом ответе. Это требует некоторой дополнительной работы с JavaScript, и вам, возможно, придется "подложить" ответ веб-службы, но это другой вариант, который работает во всех современных браузерах.

5
ответ дан 13 December 2019 в 19:22
поделиться

Вы не можете обойти междоменное происхождение с помощью XHR (ну, только в Firefox 3.5 с разрешения пользователя, не очень хорошее решение). Технически переход с порта 80 (http) на порт 443 (https) нарушает эту политику (должны быть тот же домен и порт). Это пример, на котором размещена сама спецификация - http://www.w3.org/Security/wiki/Same_Origin_Policy#General_Principles .

Вы изучали JSONP ( http://en.wikipedia.org/wiki/JSON#JSONP ) или CSSHttpRequests ( http://nb.io/hacks/csshttprequest )?

JSONP - это способ добавления тега