前言
富文本中复制百度百科的一份知识,在项目预览时发现图片显示不出来,报403问题, 图片地址用新网址打开正常显示 原因:403是防止盗链的错误(这种设计,是api厂商正常保证自己的服务器不被刷流量)
解决
-
方案一:使用no-referrer
在head 中添加
<meta name="referrer" content="no-referrer"
/>
防盗链的机制: 通过页面的referrer信息,判断访问者来源,是否本站点,然后对图片等请求作出相应
no-referrer: 1、整个 Referer 首部包含了当前请求页面的来源页面的地址,即表示当前页面是通过此来源页面里的链接进入的。 2、服务端一般使用 Referer 首部识别访问来源,可能会以此进行统计分析、日志记录以及缓存优化等。 3、首部会被移除。访问来源信息不随着请求一起发送。 官当定义文档 : https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Referrer-Policy
隐藏请求体中标注来源referrer字段,referrer字段只能隐藏,不能定制, 这样服务器端的防盗链就无法检测
-
方案二:使用images.weserv.nl
getImage(url){ console.log(url); // 把现在的图片连接传进来,返回一个不受限制的路径 if(url !== undefined){ return url.replace(/^(http)[s]*(\:\/\/)/,'https://images.weserv.nl/?url='); } }
把图片路径直接传进去,把原来url前面的http:///https://替换或者直接在图片url前加上 https://images.weserv.nl/?url=
解释: Images.weserv.nl is an image cache & resize service. Our servers resize your image, cache it worldwide, and display it. Images.weserv.nl是一种图像缓存和调整大小服务。Images.weserv.nl服务器会调整您的图像大小,在全球范围内缓存并显示它。
拓展
PS: 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" -->
[1] [2] 下一页
|