tsibelman / aws-signer-v4-dot-net

Sign HttpRequestMessage using AWS Signature v4 using request information and credentials.
Apache License 2.0
72 stars 27 forks source link

excaping issue #28

Open ddalacu opened 3 years ago

ddalacu commented 3 years ago

While writing a some code for uploading files to s3 buckets i encountered a bug where when building the canonicalRequest your code would use "request.RequestUri.AbsolutePath" but that would already escape part of the request uri example: "/Assets/Translations/General/Chinese (Simplified).json" would become "/Assets/Translations/General/Chinese%20(Simplified).json" when accessing AbsolutePath property, i fixed this by calling Uri.UnescapeDataString(request.RequestUri.AbsolutePath) The final code looks like this for me:

var unescaped = Uri.UnescapeDataString(request.RequestUri.AbsolutePath); canonicalRequest.Append(string.Join("/", unescaped.Split('/').Select(Uri.EscapeDataString)) + "\n"); Maybe this it was my bad somewhere but maybe this can help you.

ronenfe commented 2 years ago

Are you saying we shouldn't let it get escaped?

ddalacu commented 2 years ago

Hello, yes i think you don't need to do that. But you should do some separate tests to confirm the bug.

nzbart commented 1 year ago

I've also run into this issue with spaces in the file path. Is there a fix?