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



我有一个网页(https://website.co.uk/blog/expertise/)在HTTPS上运行的一些javascript(XMLHttpRequest(向同一域上的端点发出请求(/ajax/articleindesilistingajax/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添加到清漆vcl_recv中的缓存排除列表中,并且可以看到它会转到该请求的后端

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

基本URL似乎需要更改。

查看上面的错误消息,它抱怨的地址是http://website.co.uk/blog/expertise//ajax/...。双斜杠在某个地方看起来像一个concat,所以我猜它是将相对的/ajax/...路径连接到基本URLhttp://website.co.uk/blog/expertise/上。如果你能找到它从哪里获得基本URL,那么把它改为使用HTTPS,并可能删除后面的斜杠,比如https://website.co.uk/blog/expertise

基本URL通常在网站构建器的设置中定义,因此网站知道如何构建重新访问或重定向URL。通常,站点位于代理之后,SSL通常在他们看到请求之前就被终止了,所以在没有预先配置静态部分的情况下,外部URL的真实外观并不明显

相关内容

最新更新