img访问图片出现403 forbidden

最近做了一个爬虫项目,需要用img标签展示爬取到的图片信息,发现直接访问地址可以显示但是放入img标签中报403的错误,解决后在此记录。

首先让我们来认识什么是403错误。

什么是 403 forbidden

403 Forbidden是HTTP协议中的一个状态码(Status Code)。可以简单的理解为没有权限访问此站。该状态表示服务器理解了本次请求但是拒绝执行该任务,该请求不该重发给服务器。

所以我们就明白了吧,对方的服务器检查出来我们是异类所以没有给我们权限,我们自然而然就访问不了了啊。

解决方案:

在html head标签中添加

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

加上这个我们就可以正常访问了。

为什么?

这个时候你该问了,问什么加上这句代码就可以解决了呢,referrer是什么意思,那我来解释一下。

http请求体的header中有一个referrer字段,用来表示发起http请求的源地址信息,这个referrer信息是可以省略但是不可修改的,就是说你只能设置是否带上这个referrer信息,不能定制referrer里面的值。服务器端在拿到这个referrer值后就可以进行相关的处理,比如图片资源,可以通过referrer值判断请求是否来自本站,若不是则返回403或者重定向返回其他信息,从而实现图片的防盗链。

上面出现403就是因为,请求的是别人服务器上的资源,但把自己的referrer信息带过去了,被对方服务器拦截返回了403。

在前端可以通过meta来设置referrer policy(来源策略),具体可以设置哪些值以及对应的结果参考这里。所以针对上面的403情况的解决方法,就是把referrer设置成no-referrer,这样发送请求不会带上referrer信息,对方服务器也就无法拦截了。

猜你喜欢

转载自blog.csdn.net/qq_35416214/article/details/106231548