Mvc HttpGetAttribute正在接受Http POST请求

时间:2014-04-22 11:12:14

标签: asp.net-mvc

有人知道[HttpGet]属性被忽略时是否有任何特殊情况?

我有一个控制器,其上定义了[HttpGet]的操作,这意味着只允许GET请求,并且通常使用404拒绝POST请求。在IIS下本地运行此操作似乎是然而,在测试服务器上能够接受Http POST请求,这不是应该如何的情况。看起来我们确实需要能够支持控制器操作的POST请求,我们将为此添加支持。

然而,这确实提出了一个问题,即为什么我在IIS下运行的网站的本地副本似乎接受了这些请求。我希望请求以404 http状态拒绝。此外,我们在测试服务器上运行的其他站点的行为与我的本地服务器相同。

我不确定它是否与请求实际上是重定向请求有关。主要网站/门户网站'是一个旧的ASP.Net Web窗体应用程序,然后重定向到另一个路由' ASP.Net Mvc 3 Web应用程序将根据业务逻辑将请求重新路由到其他3个通道中的1个。 ASP.Net Mvc 3 Web应用程序。所有通道本质上提供相同的功能,但其中的业务逻辑略有不同。每个频道都有一个登陆控制器,可以将用户重定向到他们应该去的页面。而且这些ladning控制器上的动作具有[HttpGet]属性。

以下是测试服务器上3个通道中的1个通道:

  1. 用户点击按钮
  2. 向“'门户网站”发送请求网站结果302到'路由'站点
  3. 向'路由'发送请求网站结果在302到#39;频道'网站
  4. POST要求发送到'频道'网站结果为404。
  5. 以下是测试服务器上其他2个频道以及本地服务器上所有3个频道上的ocurrs:

    1. 用户点击按钮
    2. 向“'门户网站”发送请求网站结果302到'路由'站点
    3. 向'路由'发送请求网站结果在302到#39;频道'网站
    4. POST要求发送到'频道'网站结果302到“频道”中的目标网页。站点。
    5. 向'频道'发送请求目的地页面结果为200,页面被覆盖。
    6. 更新: 事实证明,我已经很好地领导了花园小径。重定向请求都是通过Http GET而不是Http POST完成的,因为302重定向的正确行为。但是,IE开发人员工具错误地将这些显示为POST请求而不是GET请求。事实证明,渠道服务器尚未部署到Test。

      enter image description here

1 个答案:

答案 0 :(得分:1)

对于具有POST方法/动词的http请求,具有302状态的http响应将导致具有GET方法/动词的新Http请求。这意味着重定向到具有[HttpGet]属性的控制器上的操作将成功。