前言
用 django 開發 web 頁面,在 HTML 頁面上添加圖片時,發現本地圖片可以正常顯示,但是添加一個互聯網的圖片,卻不能正常顯示。
本地 static 圖片
先在本地 static 放一張圖片yy.png,html 里面 img 標簽設置圖片地址為本地圖片地址:static/yy.png
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<p>本地圖片連接</p>
<img src="static/yy.png">
</body>
</html>
在瀏覽器是可以正常顯示圖片的
外部圖片
找一個互聯網上的圖片,比如我的公眾號二維碼的圖片地址:https://images2018.cnblogs.com/blog/1070438/201806/1070438-20180601092830072-1349216615.png
在html里面img標簽,把src地址設置成這個互聯網的圖片
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<p>本地圖片連接</p>
<img src="static/yy.png">
<p>外部網站圖片</p>
<img width="300" height="300" src="https://images2018.cnblogs.com/blog/1070438/201806/1070438-20180601092830072-1349216615.png">
</body>
</html>
訪問的時候,發現圖片沒法顯示,返回403 forbidden
解決辦法
關於referrer,說是一種引用策略,可以用來防止圖片或視頻被盜。它的原理是:http 協議中,如果從一個網頁跳到另一個網頁,http 頭字段里面會帶個 Referrer。
圖片服務器通過檢測 Referrer 是否來自規定域名,來進行防盜鏈。如果沒有設置referrer,那就可以直接繞過防盜鏈機制,直接使用或盜取。
no-referrer-when-downgrade的原因就是因為不符合安全策略送了referrer,解決辦法就是在頭部加一行
<meta name="referrer" content="no-referrer" />
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="referrer" content="no-referrer" />
<title>Title</title>
</head>
<body>
<p>本地圖片連接</p>
<img src="static/yy.png">
<p>這是一張圖片</p>
<img width="300" height="300" src="https://images2018.cnblogs.com/blog/1070438/201806/1070438-20180601092830072-1349216615.png">
</body>
</html>