首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >向使用PHP客户端库上载的文件中添加访问控制允许源头

向使用PHP客户端库上载的文件中添加访问控制允许源头
EN

Stack Overflow用户
提问于 2016-10-12 09:58:54
回答 2查看 4.9K关注 0票数 4

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

代码语言:javascript
复制
Access-Control-Allow-Origin: *

我正努力想办法解决这个问题--我的谷歌搜索是徒劳的。供参考的代码示例:

代码语言:javascript
复制
$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 );

文件上传正确,可以在桶中查看,但没有正确的标题,因为我不知道如何添加它们。实际上,我甚至无法找到一种使用云平台控制台手动添加这些头的方法。感谢你的指点,谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-10-12 13:37:13

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

我创建了一个包含内容的cors-json-file.json:

代码语言:javascript
复制
[
    {
      "origin": ["*"],
      "method": ["*"]
    }
]

然后跑

代码语言:javascript
复制
gsutil cors set cors-json-file.json gs://my_bucket

可以使用以下方法查看现有的存储区配置

代码语言:javascript
复制
gsutil cors get gs://my_bucket

配置选项的完整列表可在参考中找到。

缓存是否存在问题,我不确定,但这似乎只适用于在更改CORS配置后添加到桶中的文件,不过,我很高兴在这方面得到纠正

票数 13
EN

Stack Overflow用户

发布于 2018-02-21 12:01:55

您还可以使用StorageClientgoogle-cloud-php中配置CORS。

代码语言:javascript
复制
$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,
]);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39995762

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档