asp.net - 不允许使用 HTTP 动词 POST 来访问路径 '[my path]'

标签 asp.net forms post

我收到一条错误,指出:“不允许使用 HTTP 谓词 POST 来访问路径“[我的路径]”。”。

该错误是由于我正在实现一个使用 POST 方法的 HTML 表单元素并且未在其 ACTION 参数中显式定义 .aspx 页面而引起的。

例如:

<form action="" method="post">
  <input type="submit" />
</form>

上面的 HTML 位于“/foo/default.aspx”文件中。

现在,如果用户将 URL 指向根目录“foo”而不指定 aspx 文件(即“http://localhost/foo”),然后提交表单,则会出现错误“The HTTP verb POST used to不允许访问路径“/foo”。”将会被抛出。

但是,如果用户访问“http://localhost/foo/default.aspx”然后提交表单,则一切都会顺利(即使 ACTION 参数留空)。

注意:如果我将 .aspx (default.aspx) 页面的名称显式添加到 ACTION 参数中,则不会引发任何错误。因此,无论用户是否在 URL 中定义文件名,下面的示例都可以正常工作。

<form action="default.aspx" method="post">
  <input type="submit" />
</form>

我很好奇为什么会抛出错误,所以我读了 Microsoft KB这表明

This problem occurs because a client makes an HTTP request by sending the POST method to a static HTML page. Static HTML pages do not support the POST method.

我认为解释的核心是有道理的,但是就我而言,我的表单没有被发送到静态 html 页面 - 它被发送到 html 表单所在的同一页面(default.aspx)。 .这对于留空的 ACTION 参数是隐含的。

是否可以配置 IIS(或其他方式)以允许我们进行表单 POSTing 并将 ACTION 参数保留为空?

最佳答案

检查您的默认文档 - 如果不指定操作,它可能会剥离回 foo/。如果您有一个静态的默认文档(即:Default.html,而不是 Default.aspx),则可能会导致此问题。

关于asp.net - 不允许使用 HTTP 动词 POST 来访问路径 '[my path]',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4610433/

相关文章:

Angular 5 表单组列表控件或迭代它们

php - 上传大文件时 POST 数据消失

jquery - : 1.(ajaxStart 和 ajaxSend)和 2.(ajaxStop 和 ajaxComplete)有什么区别?

jQuery $.post();

c++ - 无法接收 HTTP 响应正文 C++

c# - 没有 ASP.NET/IIS 的 .NET Web 服务?

c# - 如何通过 C# 将可空整数列的空值插入 SQL 表

javascript - 如何使用 vb.net 中的按钮在新选项卡中打开 url,该按钮使用命令名称而不是通过单击事件

asp.net - 通过嵌套母版页从内容页访问正文元素

表单输入的 HTML 表格与列表