解决外链资源加载异常问题,应用 meta referrer 标签
今日问题
上午维护个人博客时发现,多篇文章里引用的第三方图床图片出现加载失败(裂图)的情况,检查网络和图片链接均无问题,推测是第三方服务器对请求来源做了限制。
解决过程
排查原因:通过浏览器开发者工具(Network 面板)查看图片请求的响应信息,发现请求头里的「Referer」字段携带了博客文章的完整 URL,而图床服务器因 “非白名单域名 Referer” 拒绝了资源请求;
查找解决方案:查阅 HTML 元标签相关文档,了解到
<meta name="referrer" content="no-referrer">可控制浏览器不携带 Referer 信息;实施操作:在博客模板的
<head>标签内添加该元标签,代码如下:<head> <meta charset="UTF-8"> <title>我的博客标题</title> <!-- 新增:隐藏请求来源Referer --> <meta name="referrer" content="no-referrer"> </head>
验证效果:清理浏览器缓存后刷新页面,图片成功加载,再次查看 Network 面板,请求头中已无 Referer 字段,问题解决。
知识点记录
Referer(请求头字段,拼写错误):浏览器向服务器发起请求时,自动携带的 “来源页面 URL”,用于标识请求的来源;
<meta name="referrer" content="no-referrer">作用:全局禁用 Referer 传递,第三方服务器无法获取页面来源信息;补充:若仅需针对单个链接隐藏来源,可使用
<a href="xxx" rel="noreferrer">,无需全局设置。