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

回答