Open Landsailor opened 2 years ago
I had a similar issue. I did not get an X-Amz-Content-Sha256 header although the body was provided before signing the request. To get this work provisionally I made a fork and added my service to this line: https://github.com/mhart/aws4/blob/a413aadd9e4b4e58842937a9ad53354be41ef4a1/aws4.js#L154
Having same issue, works on Postman
Hi,
Did you find a solution to this? Is there another way of getting the X-Amz-Content-Sha256
header?
Yes, I did find a solution, I had to sign the body also: https://github.com/chyke007/facial-vote/blob/main/facial-vote-frontend/src/pages/api/vote.ts
Perfect! - Thanks @chyke007 for the quick response! 👍🏻
Glad you found solution. I've also managed to resolve my issue and POST the request using AXIOS library: https://medium.com/@joshua.a.kahn/calling-amazon-api-gateway-authenticated-methods-with-axios-and-aws4-6eeda1aa8696
Hmmm, describing this may have been enough Duck Debugging to point me to where I need to go... :)
I am nowhere approaching a "JavaScript dev", so I set up a node-red server to handle various Amazon SP-API related duties. This might be an issue with my implementation, function code, or Amazon's Selling Partner API itself.
I created an endpoint that uses aws4 to generate the signature based on query data submitted via a GET, returns it, and is then used for requests in our server. It works for everything except POST requests. Those always return a similar "Close, but no cigar" message from Amazon:
Here's the function where I have tried enabling and disabling various options to try to get it to work: They all return a result similar to the one shown.
When I run the identical request in Postman using the same credentials, it works. However, I noticed that Postman also generates a X-Amz-Content-Sha256 header which is not a hash of the just body text.
Any ideas here? Is there any way to get aws4 to return the Canonical Request and StringToSign for debugging purposes?
Thanks in advance!