菜鸡源码,专注精品下载!
当前位置:首页 > 建站教程 > 建站知识

七牛云OSS时间戳图片防盗链API接口

发布时间:2024-01-05  栏目:建站知识   浏览:   分类:php教程 API接口 api教程 php时间 php代码 时间戳

七牛云OSS提供了时间戳防盗链API接口,可以有效防止图片被盗链。该接口通过在URL中添加时间戳参数,确保每次访问的图片都是动态生成的,从而避免直接访问原图。用户可以通过调用七牛云OSS的TimestampUrl API来实现时间戳防盗链功能。具体操作如下: 1. 获取AccessKey和SecretKey。 2. 调用TimestampUrl API,传入Bucket名称、Object名称和过期时间等参数。 3. API会返回一个带有时间戳参数的URL,用户可以使用这个URL来访问图片。 通过这种方式,七牛云OSS可以帮助用户保护图片资源,防止被盗链。

七牛云oss时间戳图片防盗链API接口,生成签名的 url 的时候,也要将新生成的 url 保存到 redis 中,防止每次访问都生成新的签名,即浪费服务器资源,又会增加 CDN 流量。

签名代码:

//Sign每一个图片生成2分钟有效期的签名////imgPath是图片路径,不是完整链接。funcSign(imgPathstring)(string,error){var(//七牛云设置的签名的Keykey="xxxxxxxxxx"//过期时间expire=time.Now().Unix()+60*2)rawStr:=fmt.Sprintf("%s/%s%x",key,imgPath,expire)hash:=md5.New()hash.Write([]byte(rawStr))sign:=fmt.Sprintf("%x",hash.Sum(nil))varnewPathstringnewPath=fmt.Sprintf("%s?sign=%s&t=%x",imgPath,sign,expire)//生成签名后放进redis中,过期时间比签名过期时间短1秒,下次再访问时先从redis中查找签名过的链接err:=redis.CacheSignedURL(imgPath,newPath,60*2-1)iferr!=nil{return"",err}returnnewPath,nil}

如果下次访问时没有从 redis 中获取到签名的 url ,再生成新的签名,伪码:

funcGetSignedURL(urlstring)string{cache:=redis.GetCacheSignedURL(url)ifcache!=""{returncache}returnSign(url)}

这样的好处就是在有效期内服务端返回的图片链接不会改变,浏览器就能够缓存有效期内的图片。

当过有效期时,服务端返回新的签名链接,浏览器就会向七牛 CDN 发出新的请求,进行新一轮的有效期内缓存。

前端从响应 JSON 中拿到的签名链接渲染页面。

有效期内会在浏览器中缓存:

七牛云oss时间戳图片防盗链api接口
七牛云时间戳防盗链截图

过了有效期就返回 403:

七牛云oss时间戳图片防盗链api接口
七牛云时间戳防盗链截图
相关专题

相关文章

    无相关信息
评论
建站知识
建站知识
使用技巧
调试安装
运营推广