- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 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>
我到底做错了什么?我正在按照找到的说明进行操作 here .
更新:下面是来自@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
最佳答案
您需要向 gsutil 提供另外两条信息以添加到签名中:Content-Type 和您正在创建的对象的名称。试试这个命令:
gsutil signurl -m RESUMABLE -d 1h -c "text/plain" my-key.json gs://test-bucket/object-name.txt
此外,gsutil 可能会输出类似“storage.googleapis.com/test-django-bucket/your_object?lotsOfUrlParameters”的 URL。如果您在指定“test-django-bucket.storage.googleapis.com”的主机 header 时转到该 URL,看起来您实际上想要一个名为“test-django-bucket/your_object”的对象名为“test-django-bucket”的桶。要么删除主机 header 并直接点击 storage.googleapis.com,要么编辑 gsutil 返回的 URL 以删除“test-django-bucket”位。
此外,我认为您将标题作为数据发送。我认为 axios header 是使用“ header ”配置部分设置的。
关于upload - InvalidPolicyDocument,缺少政策错误谷歌云存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37978638/
我正在尝试使用 axios 访问谷歌云存储桶以上传文件: 我将存储桶中的 CORS 策略设置为: [ { "origin": ["http://localhost:8000", "
我有直接的 HTML POSTing 到一个 S3 存储桶,为存储桶 A 工作。如果我保持所有代码完全相同但替换并签署存储桶 B 的策略,亚马逊将返回 InvalidPolicyDocument 错误
我是一名优秀的程序员,十分优秀!