问题描述
我有一个在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,但我完全不知道为什么。
解决方法
似乎需要更改基本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的真实外观就不明显了。