尝试使用边缘优化自定义域设置API网关API(到Lambda服务)。 设置自定义域:
对原始AWS API URL(https://****.execute-api.****.amazonaws.com/prod
)的调用非常有效。
但是,对****.cloudfront.net
网址或自定义域(api.****.com
)的调用会返回Bad Request
:
$ curl https://****.cloudfront.net/**** -H "Host:api.****.com"
<!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: ***==
</PRE>
<ADDRESS>
</ADDRESS>
</BODY></HTML>
(欺骗该请求的Host:
标题)
在我的域名DNS设置中,我设置了一个指向云端网址的CNAME记录,似乎工作正常。
(在自定义域名上我也遇到了SSL问题,我无法通过,但我想先解决此问题......)
答案 0 :(得分:0)
在“缓存行为”设置中将主机标头列入白名单以进行转发。这使Cloudfront将其传递给您的自定义源。
您可以在此处获取有关Cloudfront缓存标头行为的更多信息: https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/RequestAndResponseBehaviorCustomOrigin.html