2013-10-15 64 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/