将Access-Control-Allow-Origin标头添加到使用PHP客户端库上载的文件

Jim*_*m L 2 google-cloud-storage

我正在使用Google Cloud Platform PHP客户端库(https://github.com/google/google-api-php-client)将文件上传到项目中的存储桶.我需要能够使用来自另一个域的AJAX请求来获取文件,因此需要添加标头

Access-Control-Allow-Origin: *
Run Code Online (Sandbox Code Playgroud)

我正在试图解决这个问题 - 我的谷歌搜索毫无结果.代码示例供参考:

$client = new Google_Client();  
$client->setApplicationName("Test");
$client->useApplicationDefaultCredentials();

$client->addScope('https://www.googleapis.com/auth/cloud-platform');

$storage = new Google_Service_Storage($client);
$file_name = "test.txt";
$file_content = "this is a test";

$postbody = array( 
    'name' => $file_name, 
    'data' => $file_content,
    'uploadType' => "media",
    'predefinedAcl' => 'publicRead'
    );

$gsso = new Google_Service_Storage_StorageObject();
$gsso->setName( $file_name );

$result = $storage->objects->insert( "my_bucket", $gsso, $postbody );
Run Code Online (Sandbox Code Playgroud)

文件正确上传,可以在存储桶中查看,但没有正确的标题,因为我不知道如何添加它们.事实上,我甚至找不到使用Cloud Platform Console手动添加这些标头的方法.任何指针都表示赞赏,谢谢

Jim*_*m L 10

所以我终于找到了我需要的文档,它只能为存储桶本身设置CORS配置(它在文件级别是不可配置的).这里使用gsutil或XML API执行此操作的说明

我用内容创建了一个cors-json-file.json:

[
    {
      "origin": ["*"],
      "method": ["*"]
    }
]
Run Code Online (Sandbox Code Playgroud)

然后跑了

gsutil cors set cors-json-file.json gs://my_bucket
Run Code Online (Sandbox Code Playgroud)

可以使用查看桶的现有CORS配置

gsutil cors get gs://my_bucket
Run Code Online (Sandbox Code Playgroud)

可以在Google Bucket API参考中找到完整的配置选项列表

无论是否存在缓存问题我都不确定,但这似乎仅适用于在进行 CORS配置更改添加到存储桶中的文件,但是我很高兴能够更正