HTTP请求头referer字段详解与图片防盗链实战

·  阅读 1665

referer的作用

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

举个例子:

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

image.png

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

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

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

referer的拼写问题

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

实战 - 图片防盗链

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

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

扩展阅读


坚持原创,输出有价值的文章!

同学,如果文章有帮助到你,请通过以下方式给笔者反馈:

最近笔者在整理第一本电子书书稿《前端面试手册》,有兴趣的同学可以点个✨star✨关注下

分类:
前端
标签:
收藏成功!
已添加到「」, 点击更改