referer的作用

包含当前请求页面的来源页面的地址,即当前页面是通过此来源页面的链接进入的。

举个例子:

页面https://wangxiaokai.vip/posts/rel-canonical/中有一张图片juejin-seo-demo.png
图片的请求头如下:

服务器在接收到请求后,可以获知图片资源的请求的来源页面是https://wangxiaokai.vip/posts/rel-canonical/

什么情况下,referer不会被发送

  • 来源页面采用的协议为表示本地文件的”file”或者”data” URI
  • 当前请求页面采用的是非安全协议(http),而来源页面采用的是安全协议(https)

referer的拼写问题

由于历史原因,技术人员对referrer单词拼写错误, 为了保持向下兼容,所以将错就错,使用现在的单词referer
详见HTTP来源地址

实战 - 图片防盗链

1
2
3
4
5
6
7
8
9
location ~ .*\.(jpg|jpeg|gif|png|js|css)$
{
expires 30d;
access_log /dev/null;
valid_referers none blocked wangxiaokai.vip www.wangxiaokai.vip;
if ($invalid_referer){
return 404;
}
}

如代码所示,通过配置nginx,可以对请求头referer进行判断,当没有命中规则时,返回404

这样,可以节省带宽资源的消耗。