Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Cloud Front : The request could not be satisfied

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?

like image 745
Sajeetharan Avatar asked Dec 13 '22 20:12

Sajeetharan


2 Answers

I am facing the same error, I solved this by removing the body from my postman request.

like image 135
Kireeti K Avatar answered Dec 28 '22 13:12

Kireeti K


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');.

like image 39
Michael - sqlbot Avatar answered Dec 28 '22 12:12

Michael - sqlbot