好吧,我已經遍佈這些互聯網尋找我的問題的一些見解;我可能已經通過超過80堆棧溢出線程RE api網關等,但他們似乎沒有幫助或說話足夠接近我的問題。API網關CORS HTTP 415
我新的API網關和CORS,還是讓我們看看我是否能表達一些我看到的問題:
一個API網關代理設置到室壁運動流水滋潤紅移數據庫。代理,流水,和紅移網關啓動並在隔離調用時的工作,但是從我們的客戶的一個網站調用時,我們得到了一個錯誤如下:
XMLHttpRequest cannot load [api_call_here]. Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin [origin_website_here] is therefore not allowed access. The response had HTTP status code 403.
好了,強烈暗示CORS是需要,對吧?在資源上的控制檯,使CORS,部署新的錯誤:
XMLHttpRequest cannot load [api_call_here]. Request header field $cookies is not allowed by Access-Control-Allow-Headers in preflight response.
Ooooooooookay,從啓用CORS功能增加了新的選擇方法,在合併響應,使頭,訪問控制下允許頭部添加「 $ Cookies',部署。
現在我得到一個新的錯誤,非常類似於第一個錯誤:
XMLHttpRequest cannot load [api_call_here]. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin [origin_website_here] is therefore not allowed access. The response had HTTP status code 415.
通知的第一個錯誤了HTTP狀態代碼403,這第三個有身份碼415這就是我有問題。如果我進入作爲代理方法的GET方法,身體映射模板,我選擇了「沒有定義(推薦)模板時」。
現在,我讀到當API網關無法找到匹配的模板時,它拒絕發生415錯誤,因此我將上述選項更改爲「當沒有模板與請求Content-Type標頭匹配時」。這使得錯誤消失了,但是當從原點調用數據時,數據仍然沒有保持紅移。再次,當我直接從郵差,失眠或只是一個普通的舊地址欄中調用API時,記錄會很好地添加。
打開chrome並看着頁眉,我發現cookie以text/html形式出現。
關於那裏的模板映射,我只爲application/json定義了一個映射;這可能是問題的一部分嗎?
此外,從Chrome的控制檯查看響應頭如下:
content-length:37
content-type:application/json
date:Wed, 19 Apr 2017 23:43:35 GMT
status:415
via:1.1 [blahblabbleblah].cloudfront.net (CloudFront)
x-amz-cf-id:[blahblabbleblah]
x-amzn-requestid:[blahblabbleblah]
x-cache:Error from cloudfront
我是比較新的這個,所以我不看CloudFront的如何適應這一點,尤其給它抱怨媒體類型,而控制檯則抱怨沒有訪問控制允許源頭。
無論如何,任何關於如何解決第三個錯誤的幫助將不勝感激。
Cloudfront處理API網關的一些前端物流。 API-GW爲您創建的每個API創建和配置一個隱藏的CloudFront分配,並且請求通過CloudFront傳遞到API-GW。在這種情況下,'X-Cache:Error from cloudfront'意味着CloudFront返回的HTTP狀態碼大於等於400的響應。這不是錯誤「in」或「at」或「由...觸發」或「由CloudFront生成」。 CloudFront方面可以被忽略 - API-GW或其後的代理服務實際上會拋出錯誤,因爲它不喜歡「Content-Type」。 –