2013-10-15 66 views
1

我第一次部署到AWS,並且遇到了非常奇怪的行爲。我使用AngularJS,並且有一個函數使用指定的DELETE方法執行$ http服務調用。HTTP「DELETE」請求掛在Elastic Beanstalk上

var fn = function() { 
    $http({ method: "DELETE", url: "/active/route/"}) 
... 

當我執行它時,請求掛起一段時間並被拒絕。

我FN改爲

function() { 
    $http({ method: "POST", url: "/active/route/delete"}) 
... 

和它的工作就好了。

我想知道beanstalk是否有關於某些HTTP方法的具體策略,或者是什麼導致了這種行爲?

+0

你有沒有找到這個問題的解決辦法?我注意到使用jquery發送AJAX請求的相同行爲 –

+0

最後,我們發現AWS負載平衡器僅僅拒絕所有'DELETE'方法,所以如果您部署到彈性模式,您將無法使用此方法豆莖。沒有找到解決方法,所以我們只是切換到'POST' – Rocksy

回答

0

我知道這段時間一直非常活躍,但我想清楚我的情況發生了什麼,並認爲我會在此發佈給需要它的任何人。基本上,如果發送包含請求主體的請求,http DELETE方法不會很好。純粹的RESTful服務應該使用URI來傳遞對象id並形成表單,而不是形成數據或在請求主體中。當數據通過請求體傳遞時,一些Web服務器會將其讀爲POST方法,這會對API造成嚴重破壞。

在我的情況下,我在URI中傳遞了對象id,並且作爲我的體系結構的副作用,在請求正文中。除DELETE外,這在所有情況下都可以正常工作。要解決這個問題,我只是刪除了不必要的請求身體和中提琴!

希望這可以幫助別人。

看到這個職位更多細節:

http://www.spenceruresk.com/2011/11/http-delete-requests-that-include-a-body/