关于图片防盗链 - 图片加载报错403,但可以单独打开图片链接

本文介绍了图片加载时遇到403错误的原因,这是由于目标站点设置了防盗链机制,检查请求头中的Referer信息。解决方法是在HTML的head中添加meta标签,将referrer策略设为no-referrer,阻止发送Referer信息,从而避免403错误。此外,还解释了Referer头信息在HTTP请求中的作用及其在图片防盗链中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一. 问题场景:

项目引用远程图片固定链接时(多为第三方链接),图片会发生在页面无法显示,报错403,应该是加了防盗链,会检测访问图片的referer;但是单独打开该远程链接,又可以打开;
不过我们的项目暂时不需要处理这一块,先记录下关于图片防盗链吧
在这里插入图片描述

二. 如何解决?

在HTML代码的head中添加

<meta name="referrer" content="no-referrer" />

三. 为什么会出现这种情况?

主要是该站点的图片采用了防盗链的规则,该站点在得知有请求时,会先判断请求头中的信息,如果请求头中有Referer信息,然后根据自己的规则来判断Referer头信息是否符合要求,Referer 信息是请求该图片的来源地址。

http请求体的header中有一个referrer字段,用来表示发起http请求的源地址信息,这个referrer信息是可以省略但是不可修改的,就是说你只能设置是否带上这个referrer信息,不能定制referrer里面的值。
!

服务器端在拿到这个referrer值后就可以进行相关的处理,比如图片资源,可以通过referrer值判断请求是否来自本站,若不是则返回403或者重定向返回其他信息,从而实现图片的防盗链。上面出现403就是因为,请求的是别人服务器上的资源,但把自己的referrer信息带过去了,被对方服务器拦截返回了403。

在前端可以通过meta来设置referrer policy(来源策略),所以针对上面的403情况的解决方法,就是把referrer设置成no-referrer,这样发送请求不会带上referrer信息,对方服务器也就无法拦截了。
在这里插入图片描述

浏览器中的请求头信息:
在这里插入图片描述
在这里插入图片描述

相信看到这,也就明白了,当我的请求发出去时,该站点查看Referer头信息,一看来源不是本站,就报错403了。

百度发现一篇关于Referer与图片防盗链的文章,很详细,保存一下
img标签访问图片403(http referrer),直接访问图片链接可以打开
Referer与图片防盗链

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

铁锤妹妹@

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值