На нашем сайте мы загружаем функцию api calnedar, которая работает на http (cdn.instantcal.com). При загрузке этого сайта на наш сайт WordPress с https он не работает и появляется ошибка:
"Смешанное содержание: страница по адресу"https://www.geo.com/wp-admin/post.php?post=362&action=edit'был загружен по HTTPS, но запросил небезопасный ресурс'http://cdn.instantcal.com/cvj.html'. Этот запрос был заблокирован; контент должен обслуживаться через HTTPS ".
Чтобы исправить проблему смешанного iframe на нашем прокси-сервере Nginx, мы настроили новый сайт на https calendar.geopc.com и прокси на cdn.instantcal.com.
server {
listen 443;
server_name calendar.geopc.com;
location / {
proxy_pass http://cdn.instantcal.com;
proxy_set_header Host cdn.instantcal.com;
proxy_set_header X-Real-IP $remote_addr;
}
}
Затем в Iframe мы дали URL-адрес как
<iframe id="cv_if5"
src="https://calendar.geopc.com/cvir.html?id=citus.com%2F60dcfe0d8c42638%2Fcalendar.ics&theme=RE&ccolor=%23ffffc0&dims=1&gtype=cv_daygrid&gcloseable=0&gnavigable=1&gperiod=day7&itype=cv_simpleevent"
width="780" height="600" frameborder="0" scrolling="no"></iframe>
Но в Iframe мы получаем ту же ошибку
Смешанный контент: страница по адресу "https://www.geo.com/wp-admin/post.php?post=362&action=edit'был загружен по HTTPS, но запросил небезопасный ресурс'http://calendar.geopc.com/cvj.html?idcloseable=0&gnavigable=1&gperiod=da'. Этот запрос был заблокирован; контент должен обслуживаться по HTTPS.
Когда мы напрямую обращаемся к url-адресу calendar.geopc.com на https, он отлично работает на https. Но дайте мне знать, в чем проблема? Это на Iframe или на Nginx. Кто-нибудь может нам помочь?
Первая проблема заключалась в том, что iframe Исходный URL-адрес был URL-адресом HTTP, который браузеры блокируют при запросе со страницы HTTPS. С вашим proxy_pass
настройка, iframe URL-адрес источника - это URL-адрес HTTPS, который устраняет одну часть проблемы.
Однако код, загруженный из службы календаря через ваш прокси-сервер, запрашивает дополнительные ресурсы, и у них есть прямые URL-адреса к исходной службе, которые запрашиваются через HTTP.
Вам необходимо получить службу календаря, поддерживающую HTTPS, или реализовать свою, другого способа решить эту проблему нет.