URL 未指向 iframe 上的 https

URL 未指向 iframe 上的 https

在我们的站点中,我们正在加载一个在 http (cdn.instantcal.com) 上运行的日历 API 函数。使用 https 在我们的 wordpress 站点上加载此站点时,它不起作用并出现错误:

“混合内容:位于‘https://www.geo.com/wp-admin/post.php?post=362&action=edit“已通过 HTTPS 加载,但请求了不安全的资源”http://cdn.instantcal.com/cvj.html'。此请求已被阻止;内容必须通过 HTTPS 提供。"

为了修复我们的 Nginx 代理服务器中的混合 Iframe 问题,我们在 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&amp;theme=RE&amp;ccolor=%23ffffc0&amp;dims=1&amp;gtype=cv_daygrid&amp;gcloseable=0&amp;gnavigable=1&amp;gperiod=day7&amp;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 提供。

当我们直接通过 https 访问 url calendar.geopc.com 时,它在 https 上运行良好。但请告诉我问题是什么?是在 Iframe 上还是在 Nginx 上。有人能帮我们吗?

答案1

第一个问题是内嵌框架源 URL 是 HTTP URL,浏览器在从 HTTPS 页面请求时会阻止该 URL。使用你的proxy_pass设置,内嵌框架源 URL 是 HTTPS URL,这消除了问题的一部分。

但是,通过您的代理从日历服务加载的代码正在请求更多资源,并且它们具有指向其原始服务的直接 URL,这些 URL 是通过 HTTP 请求的。

您需要获取支持 HTTPS 的日历服务或实现您自己的日历服务,没有其他方法可以解决此问题。

相关内容