We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
笔者网站的图片都是上传到第三方网站上的,比如 简书、掘金、七牛云上的,但是最近简书和掘金都开启了 防盗链,防止其他网站访问他们网站上的图片了,导致笔者的网站存在他们网站上的图片全挂了。
具体问题,就是 html 中通过 img 标签引入一个第三方的图片地址,报 403 。但是这个图片地址直接复制出来在地址栏打开,却是看得到的。
官方输出图片的时候,判断了来源 Referer ,就是从哪个网站访问这个图片,如果是你的网站去加载这个图片,那么 Referer 就是:你的网站地址;
如果我们的网站地址不在官方的白名单内,所以就看不到图片了。
我们做这个跳板的关键:不发送 Referer,也就是没有来源。那么官方那边,就认为是从浏览器直接访问的,所以就能加载正常的图片了。
在某些情况下,出于一些原因,网站想要控制页面发送给 server 的 referrer 信息的情况下,可以使用这一 referer metadata 参数。
参数
referer 的 metedata 属性可设置 content 属性值为以下集合:
结果
举例
如果页面中包含了如下 meta 标签,所有从当前页面中发起的请求将不会携带 referer:
<meta name="referrer" content="never">
如果页面中包含了如下 meta 标签,则从当前页面中发起的 http 请求将只携带 origin 部分:
<meta name="referrer" content="origin">
初步方案
这样存在第三方网站上的图片,在你的网站上就可以访问了。
但是还有一个问题,就是如果你的网站需要发送你的网站地址的,那上面的的设置就不行了,比如:用到了百度统计。
那上面的设置会导致百度统计的代码加载不了,因为它需要发送你的网站地址给百度统计。
既要不发送 你的网站地址,又要发送你的网站地址,那么怎么办呢 ?
最终的解决方案
<meta id="referrer" name="referrer" content="always" />
这样之后,首屏加载的时候,加载了百度统计的代码了,能正常统计访客数据了。
加个延时 setTimeout 再把 referrer 的 content 值设置为 nerver 。 或者 在有图片的地方再把 referrer 的 content 值设置为 nerver 。
const referrer = document.getElementById("referrer"); referrer.setAttribute("content", "never")
这样就能解决第三方图片防盗链,又能用到百度统计了。
笔者博客首更地址 :https://github.com/biaochenxuying/blog
希望:大家不要恶意盗用、滥用第三方的 CDN 资源行为。
比如:掘金 CDN 本是一件公益性质的社区服务,为便大家在自己的技术博客中使用掘金 CDN 的图片,并没有开启防盗链。
但是就是因为某些人恶意盗用、滥用第三方的 CDN 资源,所以掘金社区不得不开启防盗链来减少损失和规避风险 https://juejin.im/post/5cefb6a3f265da1b95703b9d。
参考文章:
The text was updated successfully, but these errors were encountered:
IOS safari 似乎不支持啊。
Sorry, something went wrong.
biaochenxuying
No branches or pull requests
问题
笔者网站的图片都是上传到第三方网站上的,比如 简书、掘金、七牛云上的,但是最近简书和掘金都开启了 防盗链,防止其他网站访问他们网站上的图片了,导致笔者的网站存在他们网站上的图片全挂了。
具体问题,就是 html 中通过 img 标签引入一个第三方的图片地址,报 403 。但是这个图片地址直接复制出来在地址栏打开,却是看得到的。
原因
官方输出图片的时候,判断了来源 Referer ,就是从哪个网站访问这个图片,如果是你的网站去加载这个图片,那么 Referer 就是:你的网站地址;
如果我们的网站地址不在官方的白名单内,所以就看不到图片了。
我们做这个跳板的关键:不发送 Referer,也就是没有来源。那么官方那边,就认为是从浏览器直接访问的,所以就能加载正常的图片了。
referrer
在某些情况下,出于一些原因,网站想要控制页面发送给 server 的 referrer 信息的情况下,可以使用这一 referer metadata 参数。
参数
referer 的 metedata 属性可设置 content 属性值为以下集合:
结果
举例
如果页面中包含了如下 meta 标签,所有从当前页面中发起的请求将不会携带 referer:
如果页面中包含了如下 meta 标签,则从当前页面中发起的 http 请求将只携带 origin 部分:
解决方案
初步方案
这样存在第三方网站上的图片,在你的网站上就可以访问了。
但是还有一个问题,就是如果你的网站需要发送你的网站地址的,那上面的的设置就不行了,比如:用到了百度统计。
那上面的设置会导致百度统计的代码加载不了,因为它需要发送你的网站地址给百度统计。
既要不发送 你的网站地址,又要发送你的网站地址,那么怎么办呢 ?
最终的解决方案
这样之后,首屏加载的时候,加载了百度统计的代码了,能正常统计访客数据了。
加个延时 setTimeout 再把 referrer 的 content 值设置为 nerver 。
或者 在有图片的地方再把 referrer 的 content 值设置为 nerver 。
这样就能解决第三方图片防盗链,又能用到百度统计了。
最后
笔者博客首更地址 :https://github.com/biaochenxuying/blog
希望:大家不要恶意盗用、滥用第三方的 CDN 资源行为。
比如:掘金 CDN 本是一件公益性质的社区服务,为便大家在自己的技术博客中使用掘金 CDN 的图片,并没有开启防盗链。
但是就是因为某些人恶意盗用、滥用第三方的 CDN 资源,所以掘金社区不得不开启防盗链来减少损失和规避风险 https://juejin.im/post/5cefb6a3f265da1b95703b9d。
参考文章:
The text was updated successfully, but these errors were encountered: