我正在打电话给我
https://<bucket>.storage.googleapis.com/?prefix=folder%2F<object name>%2F&delimiter=/&max-keys=1000
我尝试使用其他特殊字符,例如!,@,#,$,^,&,*,(,)等。 对于其他特殊字符,我只是将它们编码在中,得到的响应就很好。
例如,在文件夹下的对象“!@”下,URL为:
https://<bucket>.storage.googleapis.com/?prefix=folder%2F%21%22%2F&delimiter=/&max-keys=1000
但是,当我尝试使用“%”作为对象名称并将百分号编码为“%25”时,出现以下错误:
<?xml version='1.0' encoding='UTF-8'?><Error><Code>InvalidSecurity</Code> <Message>The provided security credentials are not valid.</Message><Details>Request was not signed or contained a malformed signature</Details></Error>
什么可能导致此问题?
修改
因此,我尝试对百分号进行双重编码,以使“%”字符在请求中变为“%2525”。但是,在响应中,前缀奇怪地是“%25”。经过更多情况的测试后,发现只有在“%25”后跟两个介于“ 0”和“ f”范围内的2个字符时,请求才成功,但是,响应前缀将是错误的。例如,请求中的“%25ab”将导致响应前缀中的“%ab”。
答案 0 :(得分:0)
我认为这是服务方面的错误:请参见https://issuetracker.google.com/issues/117932947
我认为一种解决方法是对百分比进行两次编码。但是,一旦修复此错误,将来可能会开始失败。
答案 1 :(得分:-1)
您看到的错误消息是因为您没有足够的权限访问您的对象。
如果您使用的是身份验证方法(API密钥,承载等),请确保它们具有所需的Roles for GCS。
但是,我可以看到您像GET请求一样调用对象。尝试Make your objects public,然后使用该编码(%25)再次尝试。应该可以。
希望这会有所帮助!