1

我第一次部署到 AWS,遇到了一个非常奇怪的行为。我使用 AngularJS,并且有一个函数可以使用指定的 DELETE 方法执行 $http 服务调用。

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

当我执行它时,请求会挂起一段时间并被拒绝。

我已将 fn 更改为

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

它工作得很好。

我想知道 beanstalk 是否有关于某些 HTTP 方法的特定策略或者是什么导致了这种行为?

4

1 回答 1

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/

于 2014-02-10T18:57:05.520 回答