我正在尝试使用签名URL V2创建一个包含cache-control
标头的签名URL。
当我创建这样的URL时,该URL有效且有效。
String signature = "PUT" + "\n" +
"\n" +
contentType + "\n" +
expiresWhen + "\n" +
"x-goog-acl:public-read" + "\n" +
path;
但是当我添加cache-control
标头时,尝试上传时得到403:
String signature = "PUT" + "\n" +
"\n" +
contentType + "\n" +
expiresWhen + "\n" +
"cache-control:public,max-age=600" + "\n" +
"x-goog-acl:public-read" + "\n" +
path;
我唯一更改的是标题。标头按字母排序,不包含空格,并用“ \ n”分隔,因此应满足所有要求。还是我在这里弄错了?我假设public,max-age
必须保持此顺序并且不能排序。如果在上传时指定相同,可能很好。
然后我发现了这个问题Google Cloud Storage set cache-control with signed urls upload,但是我认为它不适用,因为我们是从服务器而不是从浏览器上传的。我的假设正确吗?
答案 0 :(得分:0)
在后端启用签名URL处理后,Cloud CDN会对带有签名URL的请求进行特殊处理。具体来说,具有签名查询参数的请求被视为已签名。收到此类请求后,Cloud CDN会验证以下内容:
HTTP方法是GET或HEAD。 Expires参数设置为将来的时间。 请求的签名与使用命名键计算的签名匹配。
如果这些检查中的任何一个失败,则将提供403禁止响应。
当我们阅读John Hanley的评论时,如果您使用的是CDN,则签名URL的Cache-Control将被忽略。 我附上下一个链接: