Я работаю над проектом, в котором мне нужно предоставить подписанный URL-адрес, по которому сторонняя компания будет загружать файлы в облачное хранилище.
Мой код c # для создания подписанного URL выглядит следующим образом
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);
}
Этот код взят из примера c # на веб-сайте документации по облаку Google.
При вставке URL в браузер я получаю 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>
Код, над которым я работаю, взят по ссылке
Кто-нибудь, пожалуйста, сообщите мне, как создать подписанный URL для загрузки файла
Thankyou