When you read about how to create and consume a pre-signed url on this guide, everything is really easy. You get your Postman and it works like a charm in the first run.
Then you open your browser, try your usual $.ajax() and send your PUT operation, and you hit the cold iced wall of AWS error message, a simple <Code>SignatureDoesNotMatch</Code>
that will steal hours from your productivity.
So here I come to save you and give you a free working example of how to upload a file directly to AWS S3 from your browser. You are wellcome :).
Thanks for this...most other docs I saw didn't include the part about the Content-Type header needing to be the same in the upload headers and the presign params. While that makes sense, it's not immediately obvious that that's the cause of the SignatureDoesNotMatch errors.