通过 Varnish/Nginx 发出 AJAX 请求时如何停止混合内容错误

How to stop Mixed Content error when making an AJAX request via Varnish/Nginx

我在 HTTPS 上有一个网页 (https://website.co.uk/blog/expertise/) 运行,一些 javascript (XMLHttpRequest) 向同一域上的端点发出请求 (/ajax/articleindexlistingajax/loadmorearticles),这会导致混合内容错误:

Mixed Content: The page at 'https://website.co.uk/blog/expertise/' was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint 'http://website.co.uk/blog/expertise//ajax/articleindexlistingajax/loadmorearticles'. This request has been blocked; the content must be served over HTTPS.

好像 Varnish 或 Nginx 正在剥离 https,但我完全不知道为什么。

似乎基础 URL 需要更改。

查看上面的错误信息,它抱怨的地址是http://website.co.uk/blog/expertise//ajax/...。双斜线看起来像某处的连接,所以我猜它是将你的相对 /ajax/... 路径连接到基础 URL http://website.co.uk/blog/expertise/ 上。如果您能找到它从哪里获取基础 URL,请将其更改为使用 HTTPS,并可能删除尾部斜线,例如 https://website.co.uk/blog/expertise.

Base URLs 通常在站点构建器的设置中定义,因此站点知道如何构建重访或重定向 URLs。通常站点位于代理后面,并且 SSL 通常在它们看到请求之前就终止了,因此如果没有 pre-configuring 静态部分,外部 URL 的真实情况并不明显。