首页
关于
留言
Search
1
红米 AX3000 (AX6) 路由器解锁 SSH 教程
6,676 阅读
2
网盘挂载程序sharelist美化教程
4,216 阅读
3
小米路由器 AX3600 开启SSH教程,官方固件即可安装 ShellClash开启科学上网
2,168 阅读
4
Oracle 甲骨文 ARM VPS 自动抢购脚本
1,819 阅读
5
编译带PassWall和SSR-plus插件的Openwrt系统
1,393 阅读
前端
Vue
React
后端
Java
Python
PHP
数据库
运维
杂谈
小程序
影视资源
登录
Search
标签搜索
Java
Linux
Mysql
IDEA
Debian
Docker
Springboot
CentOS
Cloudflare
Maven
JavaScript
SQL
Wordpress
宝塔
Nginx
Windows
MacBook
JS
CSS
Openwrt
William
累计撰写
144
篇文章
累计收到
702
条评论
首页
栏目
前端
Vue
React
后端
Java
Python
PHP
数据库
运维
杂谈
小程序
影视资源
页面
关于
留言
搜索到
1
篇与
的结果
2024-01-25
img 标签访问图片返回 403 forbidden 的解决方法
前言通过浏览器直接访问图片资源可以正常访问,但是通过 img 标签的形式,在页面中显示图片加载失败,控制台报错信息提示:403 forbidden。解决方法在页面头部的 head 中添加以下代码即可:<meta name="referrer" content="no-referrer" />原理简述http 请求体的 header 中有一个 referrer 字段,用来表示发起 http 请求的源地址信息,这个 referrer 信息是可以省略但是不可修改的,就是说你只能设置是否带上这个 referrer 信息,不能定制 referrer 里面的值。服务器端在拿到这个 referrer 值后就可以进行相关的处理,比如图片资源,可以通过 referrer 值判断请求是否来自本站,若不是则返回 403 或者重定向返回其他信息,从而实现图片的防盗链。上面出现 403 就是因为,请求的是别人服务器上的资源,但把自己的 referrer 信息带过去了,被对方服务器拦截返回了 403。在前端可以通过 meta 来设置 referrer policy (来源策略),具体可以设置哪些值以及对应的结果参考这里。所以针对上面的 403 情况的解决方法,就是把 referrer 设置成 no-referrer,这样发送请求不会带上 referrer 信息,对方服务器也就无法拦截了。隐藏 referrer 信息后,图片资源可以正常访问浏览器中 referrer 默认的值是 no-referrer-when-downgrade,就是除了降级请求的情况以外都会带上 referrer 信息。降级请求是指 https 协议的地址去请求 http 协议,所以上面 403 的情况还有另一种解决方法就是,请求的图片地址换成 http 协议,自己的地址使用 http 协议,这样降级请求也不会带上 referrer。部分 meta 标签的说明<meta charset="utf-8"> <!-- 设置文档字符编码 --> <meta http-equiv="x-ua-compatible" content="ie=edge"><!-- 告诉IE浏览器,IE8/9及以后的版本都会以最高版本IE来渲染页面。 --> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><!-- 指定页面初始缩放比例。--> <!-- 上述3个meta标签须放在head标签最前面;其它head内容放在其后面,如link标签--> <!-- 允许控制加载资源 --> <meta http-equiv="Content-Security-Policy" content="default-src 'self'"> <!-- 尽可能早的放在文档 --> <!-- 只适用于下面这个标签的内容 --> <!-- 使用web应用程序的名称(当网站作为一个应用程序的时候)--> <meta name="application-name" content="Application Name"> <!-- 页面的简短描述(限150个字符)--> <!-- 在某些情况下这个描述作为搜索结果中所示的代码片段的一部分。--> <meta name="description" content="A description of the page"> <!-- 控制搜索引擎爬行和索引的行为 --> <meta name="robots" content="index,follow,noodp"><!-- 所有搜索引擎 --> <meta name="googlebot" content="index,follow"><!-- 谷歌 --> <!-- 告诉谷歌搜索框不显示链接 --> <meta name="google" content="nositelinkssearchbox"> <!-- 告诉谷歌不要翻译这个页面 --> <meta name="google" content="notranslate"> <!-- Google网站管理员工具的特定元标记,核实对谷歌搜索控制台所有权 --> <meta name="google-site-verification" content="verification_token"> <!-- 说明用什么软件构建生成的网站,(例如,WordPress,Dreamweaver) --> <meta name="generator" content="program"> <!-- 简短描述你的网站的主题 --> <meta name="subject" content="your website's subject"> <!-- 很短(10个词以内)描述。主要学术论文 --> <meta name="abstract" content=""> <!-- 完整的域名或网址 --> <meta name="url" content="https://example.com/"> <meta name="directory" content="submission"> <!-- 对当前页面一个等级衡量,告诉蜘蛛当前页面在整个网站中的权重到底是多少。General是一般页面,Mature是比较成熟的页面,Restricted代表受限制的。 --> <meta name="rating" content="General"> <!-- 隐藏发送请求时请求头表示来源的referrer字段。 --> <meta name="referrer" content="no-referrer"> <!-- 禁用自动检测和格式的电话号码 --> <meta name="format-detection" content="telephone=no"> <!-- 通过设置“off”,完全退出DNS队列 --> <meta http-equiv="x-dns-prefetch-control" content="off"> <!-- 在客户端存储 cookie,web 浏览器的客户端识别--> <meta http-equiv="set-cookie" content="name=value; expires=date; path=url"> <!-- 指定要显示在一个特定框架中的页面 --> <meta http-equiv="Window-Target" content="_value"> <!-- 地理标签 --> <meta name="ICBM" content="latitude, longitude"> <meta name="geo.position" content="latitude;longitude"> <meta name="geo.region" content="country[-state]"><!-- 国家代码 (ISO 3166-1): 强制性, 州代码 (ISO 3166-2): 可选; 如 content="US" / content="US-NY" --> <meta name="geo.placename" content="city/town"><!-- 如 content="New York City" -->
2024年01月25日
32 阅读
0 评论
0 点赞