【问题标题】:How to stop Mixed Content error when making an AJAX request via Varnish/Nginx通过 Varnish/Nginx 发出 AJAX 请求时如何停止混合内容错误
【发布时间】:2020-08-14 23:12:59
【问题描述】:

我有一个在 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 添加到清漆 vcl_recv 中的缓存排除列表中,并且可以看到它针对此请求进入了后端

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

【问题讨论】:

  • 问题出在您的 AJAX 调用中,您正在调用 http://website.co.uk/blog/expertise//ajax/articleindexlistingajax/loadmorearticles 而不是 https
  • 调用实际上是对相对 /ajax/articleindexlistingajax/loadmorearticles 的调用,因此它获取 https,这在绕过清漆时也有效,但返回到浏览器的似乎是 http
  • 目前在该链接上获得 404
  • 那不是真正的网站

标签: ajax nginx https varnish


【解决方案1】:

似乎基本 URL 需要更改。

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

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

【讨论】:

  • 双斜线实际上是我试图掩盖真实网站的一种类型。似乎该错误是由于 Varnish 添加 Location 标头的事实引起的:http://website.co.uk/blog/expertise/ajax/articleindexlistingajax/loadmorearticles 我尝试将其更改为 https,但它尝试将其用作重定向到的位置,从而创建重定向外观。如果我完全删除标题,我会收到 permanently moved 响应
  • 啊,好的。在这种情况下,它是一个绝对重定向,生成为http://,原因与 SSL 已经终止的原因相同。如果它来自 NGINX,您可以通过将 proxy_redirect http:// https://; 添加到您的 server 块(或受影响的 locations)来修复它。如果它来自 Varnish,很可能在您的 vcl_recv 中很清楚,所以我怀疑它是否存在,但无论如何都要检查。
  • 惊人的建议!我做了一些阅读,NGINX 文档建议proxy_redirect http:// $scheme://; 这似乎已经成功了。我只是在检查它没有影响其他任何东西。
猜你喜欢
  • 2013-08-11
  • 2021-08-29
  • 2021-05-08
  • 2011-04-14
  • 1970-01-01
  • 2016-03-01
  • 2015-08-12
  • 2021-02-23
  • 1970-01-01
相关资源
最近更新 更多