七牛云文件上传返回403错误,如何排查和解决?
在用七牛云的表单上传功能时,前端提交后总是返回403 Forbidden错误。已经确认AK/SK有效,域名白名单也添加了测试环境IP,但问题依旧。
代码是按照官方文档写的,表单结构如下:
<form action="https://upload.qiniup.com" method="post" enctype="multipart/form-data">
<input type="text" name="token" value="生成的上传凭证" hidden>
<input type="file" name="file">
<button>上传</button>
</form>
控制台报错显示:”XMLHttpRequest cannot load. Invalid signature”,但后端生成的上传凭证是实时获取的。有没有可能是form表单参数漏了什么?或者跨域配置哪里没配对?
先检查后端生成上传凭证的部分。Policy 的 scope 格式要对,时间范围也要设置合理。代码放这了,PHP 版本的示例:
前端部分没啥大问题,但建议把 hidden 改成 type="hidden",这样更标准:
最后再确认下:
1. 存储空间名是否正确
2. 时间戳是否准确(服务器时间和本地时间不能差太多)
3. 如果用的是自定义域名,CNAME 配置有没有生效
还是不行的话,直接抓个包看看请求里的 Authorization 字段对不对。