Function signedUrl works incorrect with filenames containig special chars.
Problem:
Filename for creating sign is converted with code:
pathname = url.parse(filename).pathname
But filename for returning url is converted with code:
return this.url(filename)
Function this.url includes conversion by internal function encodeSpecialCharacters, that converts special symbols: !'()#*+?. But url.parse does not convert these special chars. So results are different. Difference in url & sign cause S3 error SignatureDoesNotMatch.
Example:
For Filename: file (1).png
In sign is: file%20(1).png
In url is: file%20%281%29.png
No workaround:
I can't prepare filename by myself outside the knox. Because if I convert special chars in filename before knox, knox will double convert % char (% → %25) and sign will be incorect again. For this example: file%2520%25281%2529.png.
Please, help!
Function
signedUrlworks incorrect with filenames containig special chars.Problem:
Filename for creating sign is converted with code:
pathname = url.parse(filename).pathnameBut filename for returning url is converted with code:
return this.url(filename)Function
this.urlincludes conversion by internal functionencodeSpecialCharacters, that converts special symbols:!'()#*+?. Buturl.parsedoes not convert these special chars. So results are different. Difference in url & sign cause S3 error SignatureDoesNotMatch.Example:
For Filename:
file (1).pngIn sign is:
file%20(1).pngIn url is:
file%20%281%29.pngNo workaround:
I can't prepare filename by myself outside the knox. Because if I convert special chars in filename before knox, knox will double convert % char (% → %25) and sign will be incorect again. For this example:
file%2520%25281%2529.png.Please, help!