工作中需要对音频和图片进行防盗链处理,数据存储使用第三方服务,在使用的过程中遇到的一些注意事项,特与大家分享。
防盗链的原理和应用场景
具体使用可参看此篇文章《防盗链》,里面已经详细的介绍了防盗链的原理及使用场景,和高级防盗链。这里就不再照本宣科。
具体使用中遇到的问题
项目中使用的是阿里云的OSS服务,官网和云服务采用的通信都是http的,这两天将自己的服务通过证书设置为https的请求。在设置之前,所有的资源都可以正确访问,但当设置为https之后,发现云服务上的资源无法访问了。
在网上搜索资料有以下解决方案:
- 将云服务防盗链中的规则设置为“允许referer为空”,很显然,这无法达到要求,因为一旦设置为空用户不传此内容便可轻易绕过防盗链。
- 在meta中设置referer,并将content内容设置为always,尝试了一下貌似没有效果。
- 统一采用https。其实云服务是同时支持http和https两种类型的请求,当时项目中的网络请求升级为https请求时,只需将云服务的请求也改为https即可。
其中最后一种方案相对来说在初级版本中完整的解决了问题。简单分析一下出现无法访问的原因吧。当项目中使用https,而云服务采用http时,浏览器为了安全,会强制将referer设置为空。因此,云服务无法提供内容展示。在这里有的解决方案走入误区:既然referer为空我就设置允许空不就可以了?这种误区容易导致,如果别人想利用你的资源,只需将网站升级为https即可无限制的使用你的资源。
今天的知识分享就到这里,原文链接:https://www.choupangxia.com/topic/detail/83