我使用Google Cloud Platform PHP客户端库(https://github.com/google/google-api-php-client)将文件上传到项目中的存储桶。我需要能够使用来自其他域的AJAX请求来获取文件,因此需要添加标题
<div style="height:600px;overflow-y:scroll">
<table>
...
</table>
</div>
我正在试图解决这个问题 - 我的谷歌搜索毫无结果。代码示例供参考:
Access-Control-Allow-Origin: *
文件已正确上传,可以在存储桶中查看,但没有正确的标题,因为我不知道如何添加它们。事实上,我甚至无法使用Cloud Platform Console手动添加这些标头。任何指针都赞赏,谢谢
答案 0 :(得分:6)
所以我终于找到了我需要的文档,它只能为存储桶本身设置CORS配置(它在文件级别是不可配置的)。使用gsutil或XML API执行此操作的说明为here
我用内容创建了一个cors-json-file.json:
[
{
"origin": ["*"],
"method": ["*"]
}
]
然后跑
gsutil cors set cors-json-file.json gs://my_bucket
可以使用
查看存储桶的现有CORS配置gsutil cors get gs://my_bucket
找到完整的配置选项列表
是否存在缓存问题我不确定,但这似乎仅适用于在进行CORS配置更改后添加到存储桶的文件,但是我很高兴能够纠正了
答案 1 :(得分:1)
您还可以使用StorageClient中的google-cloud-php为PHP配置CORS。
$storage = new StorageClient([
'projectId' => '<project-id>',
'keyFilePath' => '<path-to-key-file>',
]);
$cors = [
[
'maxAgeSeconds' => '3600',
'method' => ['*'],
'origin' => ['*'],
'responseHeader' => ['Content-Type'],
],
]
// Creating a bucket with CORS
$storage->createBucket('<bucket-name>', [
'location' => 'EU',
'cors' => $cors,
]);
// Updating a bucket
$storage->bucket('<bucket-name>')->update([
'cors' => $cors,
]);