URL не указывает на https в iframe
На нашем сайте мы загружаем функцию 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;
}
}
Тогда в Ифраме мы дали 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>
Но в Ифраме мы получаем ту же ошибку
Смешанный контент. Страница по адресу 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. Кто-нибудь может помочь нам?
1 ответ
Первая проблема заключалась в том, что исходным URL-адресом iframe был HTTP-URL, который блокируется браузерами при запросе со страницы HTTPS. С вашим proxy_pass
Во- первых, URL-адрес источника iframe - это HTTPS-URL, который устраняет одну часть проблемы.
Однако код, загруженный из службы календаря через прокси-сервер, запрашивает дополнительные ресурсы, и они имеют прямые URL-адреса к своей исходной службе, которые запрашиваются по HTTP.
Вам нужно получить службу календаря, которая поддерживает HTTPS, или реализовать свой собственный, другого способа решить эту проблему нет.