我正在做一个项目,我需要提供一个签名的URL,第三方公司将在该URL上将文件上传到云存储中。
我的用于创建签名URL的C#代码如下
private void GenerateV4SignedPutUrl(string bucketName, string objectName)
{
UrlSigner urlSigner = UrlSigner
.FromServiceAccountPath(Environment.GetEnvironmentVariable("GOOGLE_APPLICATION_CREDENTIALS"))
.WithSigningVersion(SigningVersion.V4);
var contentHeaders = new Dictionary<string, IEnumerable<string>>
{
{ "Content-Type", new[] { "text/plain" } }
};
string url = urlSigner.Sign(bucketName, objectName, TimeSpan.FromHours(1), HttpMethod.Put, contentHeaders);
}
此代码来自google cloud文档网站上的c#示例。
在浏览器上粘贴网址时,我得到如下的xml
<Error>
<Code>MalformedSecurityHeader</Code>
<Message>Your request has a malformed header.</Message>
<ParameterName>content-type</ParameterName>
<Details>
Header was included in signedheaders, but not in the request.
</Details>
</Error>
更新
我更新了代码以摆脱内容类型,
删除了代码
var contentHeaders = new Dictionary<string, IEnumerable<string>>
{
{ "Content-Type", new[] { "text/plain" } }
};
我正在获取xml,如下所示:
<Code>SignatureDoesNotMatch</Code>
<Message>
The request signature we calculated does not match the signature you provided. Check your Google secret key and signing method.
</Message>
我正在处理的代码来自link
请有人指导我如何创建签名的网址以上传文件
谢谢