我最近将我的网站(共享主机)从HTTP更改为HTTPS。我能够加载网页,但图像抛出403错误。这是我的测试页面:在https://www.manogat.com/ssltest.html
=====================
<!DOCTYPE html>
<html lang="mr-IN">
<head>
<title>ssl image loading test</title>
</head>
<body>
<div class="header">
<img style="float:left;" src="img/mano_logo.png" alt="" id="logo-image" >
</div>
</body>
</html>
=====================
浏览器对logo.png抛出403错误。使用console.log https://www.manogat.com/img/mano_logo.png
中的url如果我复制并粘贴url在单独的窗口或选项卡,图像加载正常。
切换到ssl/https后有什么问题?请帮助
显然有某种形式的基于Referer头的访问控制。这很容易检查。对于https://...
referrer,它给出了403 Forbidden:
$ curl -v -H "Referer: https://www.manogat.com/ssltest.html" https://www.manogat.com/img/mano_logo.png
...
< HTTP/1.1 403 Forbidden
没有Referer头,而是给出200:
$ curl -v https://www.manogat.com/img/mano_logo.png
...
< HTTP/1.1 200 OK
与http://
代替https://
引用它也工作:
$ curl -v -H "Referer: http://www.manogat.com/ssltest.html" https://www.manogat.com/img/mano_logo.png
...
< HTTP/1.1 200 OK
注意,检查似乎显式地查找空标头或http://www.manogat.com
。如果Referer头被设置为不同的HTTP站点,如http://example.com
,则会得到403。
不清楚这个检查是从哪里来的,因为对主机、服务器和配置一无所知。