回到笔记MinIO 预签名上传的认证陷阱使用 S3 预签名 URL 上传文件时,认证信息只能出现一次;如果客户端配置了全局拦截器,还需要为上传请求单独放行。 2025年8月5日 1 分钟阅读收听本文 Microsoft Edge 神经语音预签名 URL 已经把临时凭证、签名和过期时间编码在查询参数中。上传时如果又携带 Authorization 或其他 Token,服务端可能判断请求同时使用了两种认证方式并拒绝它。 curl -X PUT \ -H "Content-Type: image/jpeg" \ --upload-file ./photo.jpg \ "https://storage.example.com/bucket/photo.jpg?X-Amz-Algorithm=..." 需要注意两点: 请求方法、Content-Type 和参与签名的请求头必须与生成 URL 时一致。 不要让全局网络层自动追加 Authorization。 如果 iOS 客户端使用 Alamofire 的 RequestInterceptor 注入登录 Token,应当为预签名上传建立单独的 Session,或根据目标 Host 和请求类型跳过认证适配。 [!TIP] 遇到 SignatureDoesNotMatch 时,优先比较请求方法、路径、Content-Type、系统时间和参与签名的请求头,不要只检查 Access Key。 交流留下你的想法评论由 GitHub Issues 托管,中英文页面共享同一段讨论。正在载入评论…
预签名 URL 已经把临时凭证、签名和过期时间编码在查询参数中。上传时如果又携带
Authorization或其他 Token,服务端可能判断请求同时使用了两种认证方式并拒绝它。需要注意两点:
Content-Type和参与签名的请求头必须与生成 URL 时一致。Authorization。如果 iOS 客户端使用 Alamofire 的
RequestInterceptor注入登录 Token,应当为预签名上传建立单独的Session,或根据目标 Host 和请求类型跳过认证适配。