【发布时间】:2021-02-21 05:51:09
【问题描述】:
我有一个具有以下 CORS 配置的 Google Cloud Storage 存储桶:
[
{
"origin": ["http://localhost:8080"],
"responseHeader": [
"Content-Type",
"Access-Control-Allow-Origin",
"Origin"],
"method": ["GET", "HEAD", "DELETE", "POST", "PUT", "OPTIONS"],
"maxAgeSeconds": 3600
}
]
我正在使用以下代码生成签名 URL:
let bucket = storage.bucket(bucketName);
let file = bucket.file(key);
const options = {
version: "v4",
action: "write",
expires: Date.now() + 15 * 60 * 1000, // 15 minutes
contentType: "application/zip"
};
let url = await file.getSignedUrl(options))[0];
对于我的请求,我使用以下标头:
Origin: http://localhost:8080
Content-Type: application/zip
当我尝试使用 PUT 请求上传数据时,一切正常,我得到了包含我的 Origin 的 Access-Control-Allow-Origin 标头。但是,当我使用完全相同的标头执行 OPTIONS 请求时,它无法返回 Access-Control-Allow-Origin 标头。我已经尝试对我的 CORS 配置进行许多更改,但都没有像这样:
- 将来源更改为
* - Stackoverflow it's answer 和 cmets 中描述的不同变化。
- GitHub Google Storage API Issues 中描述的不同变化
【问题讨论】:
标签: google-cloud-platform cors google-cloud-storage google-api-nodejs-client pre-signed-url