0

我正在构建一个无服务器应用程序,我的SPA托管在S3上,而我的API在lambda前端由API网关结束。相当标准的东西。现在,我希望我的cloudfront发行版位于S3和API网关的前方,以便它们位于同一个域中,以防止来自SPA的CORS预检请求。在没有缓存模式下的cloudfront

将cloudfront转换为非缓存模式的最简单方法我相信是转发所有头文件。不幸的是,当我通过设置行为来开始获取cloudfront错误403时,我被强制发送缓存控制标题(从我的lambda'Cache-Control':'no-cache,no-store,must-revalidate')到防止缓存。

请求API网关通过CloudFront的:

GET - https://dev.b*******e.in/dev/b******e/ 
:authority:dev.b******e.in 
:method:GET 
:path:/dev/b******e/ 
:scheme:https 
accept:application/json, text/plain, */* 
accept-encoding:gzip, deflate, sdch, br 
accept-language:en-US,en;q=0.8 
authorization:Bearer eyJmYWNlYm9vayI6eyJhY2Nlc3NfdG9rZW4iOiJFQUFZWGhyd1ZoTnNCQUlmOE5BUWU2ZnpwT2xDd2dUVVpBR1k0VmJZWkFMV0R4ekdYcEttek9NR0paQlNIdzdTeU5oRTloMTY3Nmh3bEZ4d2NpQ1laQnhDQ1IwUWZMWkFmVU1UMTRXOUxME1vWkQiLCJ0b2tlbl90eXBlIjoiYmVhcmVyIiwiZXhwaXJlc19pbiI6IjUxODM5NjcifX0= 
cache-control:no-cache 
dnt:1 
pragma:no-cache 
referer:https://dev.b******e.in/b*** 
user-agent:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36 

Response - Status Code:403 
Response headers: 
content-length:551 
content-type:text/html 
date:Fri, 21 Apr 2017 02:54:23 GMT 
server:CloudFront 
status:403 
via:1.1 3336340a46390eb94ce8a4b00e4863fc.cloudfront.net (CloudFront), 1.1 efe8f585d51dfd5d8d354f74f0385a50.cloudfront.net (CloudFront), 1.1 84760d59a7d324aa7adc2bf9d8f7fd4b.cloudfront.net (CloudFront) 
x-amz-cf-id:npw8LPJPvy1Ti_709BvUAHpZOdmOe1wsxm1jO7WdLACyzFESFGtMnQ== 
x-cache:Error from cloudfront 

响应体:`

<!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: 7BVUPh3HiZZGVKLWN9tMEz31gHzq762iPGHHW1fg2I7uNa87205P_Q== 
 
</PRE> 
 
<ADDRESS> 
 
</ADDRESS> 
 
</BODY></HTML>

`

如何被大家解决这个问题? 以下是我的发布设置。 enter image description here

我的行为设置(这不工作): enter image description here

我的行为设置(这工作): enter image description here

+0

您是否在CloudFront分配上设置了CNAME? – Bram

+0

是的。我没有将CNAME添加到发行版中。 – Prabhat

+0

您对API GW API调用的请求是否收到403?或者s3电话?响应组织中有什么? – Balaji

回答