it-roy-ru.com

Jquery загрузки https URL

У меня есть эта проблема. На внешнем веб-сайте у меня есть такой скрипт:

<div id="idtest"></div>
<script src="//example.com/widget.js" type="text/javascript"></script>

example.com находится в https (разрешите http и https). На сервере в скрипте widget.js у меня есть:

 $('#idtest').load("https://example.com/index.html")

Я получаю эту ошибку: Смешанный контент: страница на странице была загружена по протоколу HTTPS, но запросила небезопасную конечную точку XMLHttpRequest ' http://example.com/index.html '. Этот запрос был заблокирован; содержание должно быть подано через HTTPS.

Я не понимаю: почему ошибка и почему конечная точка находится в «http»? Спасибо

Правка

Дополнительная информация: 

если в widget.js я делаю это:

 $('#idtest').load("./index.html")

содержимое загружается, и все работает отлично, если я загружаю скрипт на моем сайте. 

Если я сделаю что-то вроде:

 x = "https://example.com"
 $('#idtest').load(x + "/index.html")

или же 

 $('#idtest').load("https://example.com/index.html")

Я получаю сообщение об ошибке (если я размещаю скрипт на своем сайте или на внешнем сайте). Зачем?

Правка 2

больше информации:

мой сайт в Джанго 

Правка 3

В Firefox я загружаю страницу в https и http. Это не работает в Chrome. Я вижу эту ситуацию в Firefox Net Analyzer при вызове URL:

302 https://example.com/index.html 200 http://example.com/index.html [смешанное содержимое]

Что понимаете в этой ситуации (https to http)? Может ли быть проблема перенаправления Django?

7
RoverDar

A ошибка смешанного содержимого происходит, когда:

  • вы пытаетесь загрузить защищенный контент SSL (https) на странице, обслуживаемой небезопасно (http)

Или наоборот

  • вы пытаетесь загрузить небезопасный контент (http) на защищенную страницу SSL (https)

Ваше сообщение об ошибке предупреждает, что ваша вызывающая страница была загружена в небезопасном режиме

Вы явно не объяснили это, но ваша ошибка указала, что ваша страница обслуживается без SSL. Когда вы пытаетесь загрузить защищенный ресурс, это становится проблемой смешанный режим защищенных ресурсов и небезопасных.


Если возможно, вы пытаетесь предоставить справочный файл таким же образом

  • Вы можете открыть свою главную страницу в SSL (https)

  • Вы можете запросить частичную страницу в http

    $ ('# idtest'). load (" http://example.com/index.html ")

или же

  • Как вы решили, запросите частичную страницу без протокола. Теперь ваш загруженный файл будет загружен с использованием протокола, используемого вашей страницей.

О вашем конкретном ресурсе:

Я пытался загрузить:

http://example.com/index.html

а также

https://example.com/index.html

Результат был таким же. Я получил простую страницу с сообщением:


Пример домена

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

Дополнительная информация...

12
Dave Alperovich

Я думаю, что это больше проблема кросс-домена. 

функция $ .load в jquery использует ajax для загрузки URL-адреса, и поэтому вы не можете выполнять междоменный вызов, если целевой URL не реализует заголовки CORS.

В вашем примере сервер example.com должен вернуть заголовок

Access-Control-Allow-Origin: *

Вы также можете заменить * доменом страницы, который хочет загрузить контент с помощью AJAX.

Хороший пост в блоге о том, как использовать CORS: http://www.html5rocks.com/en/tutorials/cors/

1
Julien Bachmann

У меня была эта проблема на веб-странице Ruby on Rails, и ошибка заключалась в том, чтобы использовать помощник "_url" вместо "_path" на веб-странице https:

в виде : неправильно: borrar_linea_factura_url(l)

хорошо: borrar_linea_factura_path(l) 

Как резюмирует сказанное ранее:

Помощник "_url" генерирует /controller/action/params 

Помощник "_path" генерирует https://controller/action/params

0
Albert Català