【问题标题】:ASP.NET page POST only accessASP.NET 页面仅 POST 访问
【发布时间】:2015-09-01 08:09:33
【问题描述】:

我想知道是否可以仅将 ASPX 页面的访问限制为 http POST 请求方法?这个受限页面将用于渲染一些复杂的内容。我想将它用于 ajax 调用,这会将内容返回到另一个页面上的 div 中。是否可以禁用 GET 请求,使用户无法通过浏览器中的 URL 访问它?

【问题讨论】:

    标签: asp.net ajax post get


    【解决方案1】:

    您不能阻止用户发出 GET 请求。您可以在不提供这些服务的服务器上进行选择。比如像:

      if (!string.Equals(Request.HttpMethod, "POST"))
      {
          Response.StatusCode = 405;
          Response.End();
      }
    

    这可以在Page_Load 事件中实现,甚至可以在HttpModule 中实现(如果您需要更多页面等)。

    【讨论】:

    • 输出405 status 比抛出异常更好(我假设它会返回 500)。
    • 如果您使用 WebForms,您也可以使用 Page.IsPostBack 而不是检查 Request.HttpMethod..
    • @TryingToImprove - 这是常见的误解 - 您甚至可以通过 GET 请求进行 PostBack。
    • 不知道你能做到这一点。怎么样?
    • @TryingToImprove - 只需在您的 runat="server" 表单中设置 method="get",您就会看到(IsPostBack 为真,但方法为 get)。由于明显的原因,这并没有被大量使用(只有这么多的数据获取请求可以获取),但它是黑客伪造请求的好方法 - 所以要小心:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多