Cloud Front : The request could not be satisfied
Solution 1
require('http');
That is an HTTP client -- not an HTTPS client.
Specifying port 443 doesn't result in an HTTPS request, even though port 443 is the assigned port for HTTPS. It just makes an ordinary HTTP request against destination port 443.
This isn't a valid thing to do, so CloudFront is returning a Bad Request
error.
You almost certainly want to require('https');
.
Solution 2
I am facing the same error, I solved this by removing the body from my postman request.
Solution 3
I have seen this problem before. It happens due to the following reasons,
- Invalid Protocol (using http instead of https)
- Unknown http verb, make sure the endpoint is having the POST implemented in your case. If you are using API gateway, make sure you have deployed it.
Solution 4
In my case, I had the same problem as @Kireeti K, where I solved this by removing the body from my postman
request.
it seems that Cloudfront throws an error if you send a GET
request with a body, if you want to use the body, you will need to change your method to something else than GET
, for me POST
worked perfectly, the error was gone and I was able to read the body.
Related videos on Youtube
Sajeetharan
👋 Follow and say Hi @Kokkisajee . Click here To know more about me
Updated on April 25, 2022Comments
-
Sajeetharan about 2 years
I am coming across this problem, i have a chat server which needs to communicate to the lambda service hosted in aws , but cloud front throws the following error.
BODY: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1"> <TITLE>ERROR: The request could not be satisfied</TITLE> </HEAD><BODY> <H1>ERROR</H1> <H2>The request could not be satisfied.</H2> <HR noshade size="1px"> Bad request. <BR clear="all"> <HR noshade size="1px"> <PRE> Generated by cloudfront (CloudFront) Request ID: h5kPdVnMXwh-P7e7mxQ5LL1gj9fAupp_MNAPxmxufI74W4WhE_MByw== </PRE> <ADDRESS> </ADDRESS> </BODY></HTML>
This is how my request goes in application.
const options = { hostname: 'xxx.uat.com', port : '443', path: '/qa/addMessage', method: 'POST' }; const req = http.request(options, (res) => { }
the chat server.js is hosted in ec2. what is the issue here?
-
Michael - sqlbot over 6 yearsWhat kind of object is
http
? -
Sajeetharan over 6 yearsconst http = require('http');
-
-
Sajeetharan over 6 yearsit has POST method implemented
-
Sajeetharan over 6 yearsshould i use https?
-
Sajeetharan over 6 yearsYes this is the answer
-
ejfrancis over 2 yearsthis fixed it for me when using a GET request