我正在尝试使用 axios 访问谷歌云存储桶来上传文件:
我将存储桶中的 CORS 策略设置为:
[
{
"origin": ["http://localhost:8000", "localhost"],
"responseHeader": ["Access-Control-Allow-Origin", "Content-Type"],
"method": ["GET", "HEAD", "DELETE", "PUT", "POST"],
"maxAgeSeconds": 3600
}
]
然后我使用这个 gsutil 命令生成一个签名的 url:
gsutil signurl -m RESUMABLE -d 1h my-key.json gs://test-bucket/
最后我发送这个 axios POST 请求:
var startLink = "signed url from gsutil"
var data = {
'Content-Length': 0,
'Content-Type': 'text/plain',
'x-goog-resumable': 'start',
host: 'test-django-bucket.storage.googleapis.com',
};
axios.post(startLink, data)
.then(function(response) {
console.log(respone);
});
我得到的结果是:
<?xml version='1.0'
encoding='UTF-8'?><Error><Code>InvalidPolicyDocument</Code><Message>The content of the form does not meet the conditions specified in the
policy document.</Message><Details>Missing policy</Details></Error>
我到底做错了什么?我正在按照此处的说明进行操作。
更新: 下面的@BrandonYarbrough 提供了一些关于我必须解决的问题才能在一段时间后让一切正常工作的注释:
首先axios请求出错了,应该是:
var data = {
headers: {
'content-type': 'text/plain',
'x-goog-resumable': 'start',
}
};
axios.post(startLink, {}, data)
.then(function(response) {
console.log(response);
});
接下来我必须更新 gstuil 命令,如下所述:
gsutil signurl -m RESUMABLE -d 10h -c "text/plain" mykey.json gs://test-bucket