cloudreve / Cloudreve

🌩支持多家云存储的云盘系统 (Self-hosted file management and sharing system, supports multiple storage providers)
https://cloudreve.org
GNU General Public License v3.0
22k stars 3.45k forks source link

S3 兼容策略中含有点(.)字符储存桶的问题 #2059

Open cxplay opened 7 months ago

cxplay commented 7 months ago

相关问题: 针对AWS S3 API兼容性问题 · Issue #1559 · cloudreve/Cloudreve

根据 AWS S3 储存桶的命名规则: Bucket naming rules - Amazon Simple Storage Service

储存桶命名可以使用带有 . (小数点) 的字符, 但是使用带点字符后将无法使用主机格式路径访问文件, 因为这与 SSL 证书的许可域名发生冲突.

在 Cloudreve v3.8.4 中, 如果 S3 储存策略中的储存桶名称中含有点字符也将无法使用主机名格式的 HTTPS Endpoint 上传文件, 会强制使用路径格式. 如果使用 HTTP Endpoint 可以顺利使用主机名格式上传, 但是会遇到 HTTP 资源与 HTTPS 资源混用而又被浏览器安全策略禁止.

在使用 HTTPS Endpoint 的设置后使用路径格式, 生成直接链接时又会遇到 #1559 问题, 即直接链接中存在多余的储存桶名称, 导致设置 CDN 加速域名后生成的链接实际无效. 生成的直接链接为: https://cdn.example.com + /BUCKET/path/to/files.ext.

因此为针对这种情况, 建议: