2016-05-16 89 views
1

這AWS API-CORS網關的問題是讓我完全瘋了在狀態400

我試着打電話從我從API網關與IAM訪問限制的角度應用一個API網關休息服務。所以我需要使用IAM身份驗證進行調用。我正在使用我已經獲得的臨時IAM憑證

我對該服務的呼叫失敗,說沒有Access-Control-Allow-Origin標頭。當我嘗試從郵遞員打電話給我的服務時,我沒有在響應中看到所需的標題。在我的郵遞員電話上,由於我的身份驗證失敗,我得到了一個403狀態,但我仍然期待標題。如果我在其工作的方法上刪除了IAM認證,我會返回響應字符串和標題即時消息尋找。

我在這裏失蹤了什麼?當然,即使我的身份驗證失敗了,我仍然必須取回該頭文件,以便我可以看到顯示身份驗證失敗的消息。

任何幫助將非常感激

感謝

+0

我嘗試過的最新的事情是創建一個沒有身份驗證的橋接api-gateway服務,位於我的調用和經過身份驗證的服務之間。負面情況起作用,如果我的身份驗證失敗,我得到的Cors標題回來,但我的積極的情況並沒有。我收到一個錯誤:「我們計算的請求籤名與您提供的簽名不匹配請檢查您的AWS祕密訪問密鑰和簽名方法請參閱服務文檔以獲取詳細信息」_ – 3uPh0riC

回答

0

請確保你對你的選擇方法啓用AWS_IAM認證,否則瀏覽器將無法進行飛行前的請求,您的請求將失敗。您應該仍然在其他方法上啓用AWS_IAM。

+0

謝謝我檢查了,但那不是。我實際上可以做一個OPTIONS調用,然後我找回這些頭文件,但只要我調用POST方法,它就不會返回'Access-Control-Allow-Headers→Content-Type,X-Amz-Date,Authorization,X- Api-Key,X-Amz-Security-Token 訪問控制 - 允許方法→POST,選項 訪問控制 - 允許來源→*' – 3uPh0riC

+0

這似乎與失敗我的身份驗證有關。爲了測試,我將我的管理員IAM密鑰的詳細信息輸入郵遞員併發出了請求,並且我正確收回了郵件頭。當我改變一個數字以失敗的身份驗證我不。我顯然仍然需要它,因爲現在的情況我不能看到正確的錯誤,因爲我看到的只是CORS失敗。 – 3uPh0riC

+0

這是CORS支持的一個限制。我們目前正在追蹤我們積壓的項目以改善這一點。到目前爲止,如果通話未通過身份驗證,您將看到CORS錯誤,而不是驗證錯誤。 –

1

this link on the AWS forum似乎有是與IM正是在這裏遇到一個什麼問題開......不知道什麼當前即時尋找可能

+0

請注意,此問題已通過API網關中的一項新功能予以更正:http://docs.aws.amazon.com/apigateway/latest/developerguide/customize-gateway-responses.html –

1

你讓你的Cognito角色訪問API端點?

你必須使用類似這樣的對Cognito角色策略:

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
     { 
      "Effect": "Allow", 
      "Action": [ 
       "execute-api:invoke" 
      ], 
      "Resource": [ 
       "arn:aws:execute-api:<API_REGION>:<ACCOUNT_ID>:<API_ID>/*" 
      ] 
     } 
    } 
} 

如果使用IAM身份驗證您的端點,如果你不允許Cognito角色來訪問你的API,API網關將生成一個403響應。 此響應不是由您的API定義定義的,因爲該API請求在達到您的API處理要求之前被API網關拒絕。 這就是爲什麼你的CORS配置不適用於