2017-06-03 82 views
1

我從節點調用AWS API網關,使用以下選項:如何添加認證到AWS API網關呼叫的NodeJS

var post_options = { 
     host: 'myurl.execute-api.us-west-2.amazonaws.com', 
     port: '443' 
     path: '/staging/api', 
     method: 'POST', 
     headers: { 
      'Content-Type': 'application/json', 
      'Content-Length': Buffer.byteLength(post_data) 
     } 
    }; 

的呼叫通過以下方式提出:

http.post(post_options, post_data, function(res){ 
      res.setEncoding('utf8'); 
      res.on('data', function(chunk) { 
       console.log(chunk); 
      }); 
     }); 

響應我得到的回覆是:

<!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: Yl1rUhK7Bmaq57ckHvK1E32tqNqDs4GC078yek3_23_RMefXUGJAdA== 
</PRE> 
<ADDRESS> 
</ADDRESS> 
</BODY></HTML> 
name: undefined 
<!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: nJ3dotCRum8XudR6v0PinqzDjjPCX3N5TmoM2fNQSJK9BLn8jJEWqg== 
</PRE> 
<ADDRESS> 
</ADDRESS> 
</BODY></HTML> 

我想,我得到「錯誤的請求」,因爲我沒有通過任何authenticat離子信息給我的電話。 什麼是適當的語法添加這樣的認證信息?

+1

您在API端點上配置了哪些認證?如果你沒有配置任何,沒有任何,你的錯誤是別的。 – Paul

+0

我的同事配置了該部分。我會與他覈對。 –

+2

如果它與認證相關,則不會得到400(錯誤請求)。你會得到401(未授權)或403(禁止)。請檢查您的請求是否正確。 –

回答

0

API網關不支持分塊編碼,是你試圖在後端使用什麼?如果通過API網關返回的響應標題指示我們應該使用分塊編碼,則可能存在問題。

無論如何,您都不應該收到此錯誤,但我想確定關於您的API /後端的更多細節。