通过 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.
- 站点在 nginx/1.18.0 上使用 Varnish 运行,如果我绕过 Varnish,我不会收到错误
- 我已将 ^ajax 添加到 varnish 中的缓存排除列表中
vcl_recv
并且可以看到它转到此请求的后端
好像 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 的真实情况并不明显。
我在 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.
- 站点在 nginx/1.18.0 上使用 Varnish 运行,如果我绕过 Varnish,我不会收到错误
- 我已将 ^ajax 添加到 varnish 中的缓存排除列表中
vcl_recv
并且可以看到它转到此请求的后端
好像 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 的真实情况并不明显。