要实现只能在本网站上访问上传到 OSS(对象存储服务)的图片,而不能直接下载或访问 OSS 文件链接,可以使用以下步骤:
1. 首先,确保已经在 OSS 上创建了一个存储桶(Bucket)用于存储图片文件。
2. 在存储桶的权限设置中,将存储桶的访问权限设置为私有(Private)。
3. 在你的网站后端代码中,上传图片到 OSS 存储桶时,需要生成一个访问授权凭证(签名)。
- 在服务端生成一个用于签名的密钥(Access Key),该密钥只在服务端保存,不会暴露给前端,可以通过类似阿里云的服务SDK来操作。
- 在上传图片的接口中,每次接收到上传请求时,使用服务端密钥对请求进行签名。签名时需要设置有效期,例如 30 分钟。
- 将签名和上传请求一起返回给前端。
4. 前端上传图片时,在请求中携带签名信息。
- 在前端上传图片时,先向网站后端请求获取签名。
- 在上传请求中,将签名信息作为参数或者请求头携带给 OSS。
5. OSS 存储桶收到带有签名信息的请求时会校验签名的有效性和过期时间。如果签名有效,则允许上传文件。
6. 前端访问图片时,不能直接使用 OSS 文件链接,而是通过网站后端提供的接口获取访问链接。
- 在网站后端准备一个用于访问图片的接口。
- 在此接口中,使用服务端密钥对请求进行签名,生成图片的临时访问链接,并返回给前端。
7. 前端在展示图片时,使用后端返回的临时访问链接进行访问。
通过以上步骤,只有在你的网站上获取到了有效签名的请求才能进行图片的上传和访问,从而实现了只能在本网站上访问上传到 OSS 的图片,而不能直接下载或访问 OSS 文件链接。