Amazon web services 云端:无法满足请求
我遇到了这个问题,我有一个聊天服务器,它需要与aws中托管的lambda服务通信,但是CloudFront抛出以下错误Amazon web services 云端:无法满足请求,amazon-web-services,amazon-ec2,amazon-cloudfront,serverless-framework,Amazon Web Services,Amazon Ec2,Amazon Cloudfront,Serverless Framework,我遇到了这个问题,我有一个聊天服务器,它需要与aws中托管的lambda服务通信,但是CloudFront抛出以下错误 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/ht
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>
chat server.js托管在ec2中。这里的问题是什么 我以前见过这个问题。发生这种情况的原因如下:
require('http')代码>
这是一个HTTP客户端,而不是HTTPS客户端
指定端口443不会导致HTTPS请求,即使端口443是为HTTPS分配的端口。它只是针对目标端口443发出一个普通HTTP请求
这不是有效的操作,因此CloudFront返回了一个错误请求
您几乎肯定想要要求('https')代码>在我的例子中,调用CloudFront时我有一个客户端负载平衡器。因此,我通过IP地址而不是主机名调用CF。
我与Amazon AWS支持团队进行了检查,在这种情况下,CF拒绝了请求并返回“403错误,请求可以满足”。我遇到了相同的问题,为我工作
此错误消息:
“无法满足请求。请求不正确。”
来自客户端,并且错误可能由于以下原因之一而发生:
请求是通过HTTP发起的,但CloudFront发行版配置为仅允许HTTPS请求
请求的备用域名(CNAME)与CloudFront发行版不关联
(在我的例子中,原因是#2)。我面临同样的错误,我通过从邮递员请求中移除尸体来解决这个问题。对我来说,问题是,我重新启动了EC2,它更改了实例ID,但我的cloudfront原点仍然指向以前的ID。因此,一旦我更改了它,它工作得很好。什么类型的对象是http
?consthttp=require('http');它实现了POST方法我应该使用https吗?是的,这是答案
const options = {
hostname: 'xxx.uat.com',
port : '443',
path: '/qa/addMessage',
method: 'POST'
};
const req = http.request(options, (res) => {
}