我收到一個錯誤,指出:「HTTP動詞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不允許訪問路徑'/ foo'。「將被拋出。但是,如果用戶轉到「http://localhost/foo/default.aspx」並提交表單,一切都會好的(即使ACTION參數爲空)。
注意:如果我明確將.aspx(default.aspx)頁面的名稱添加到ACTION參數中,則不會引發錯誤。所以下面的例子工作正常,無論用戶是否在URL中定義文件的名稱。
<form action="default.aspx" method="post">
<input type="submit" />
</form>
我好奇,爲什麼被拋出的錯誤,所以讀出的Microsoft KB,指出發生
此問題,因爲客戶端 使得通過發送 POST方法的HTTP請求一個靜態的HTML頁面。 靜態HTML頁面不支持 POST方法。
我想這個解釋的核心是有意義的,但是在我的情況下,我的表單並沒有被髮送到一個靜態html頁面 - 它被髮送到html表單所在的頁面(default.aspx )...這對於保留爲空的ACTION參數是隱含的。
是否有可能配置IIS(或其他),這將允許我們做表單發佈並保持ACTION參數爲空?
我會盡量避免不指定操作。由於瀏覽器沒有發佈信息,也沒有指定操作(很少),我想你可能會在某些平臺/瀏覽器上遇到奇怪的行爲。 – Teson 2011-01-05 23:52:27
是的,你應該總是指定一個動作,即使它回發到同一頁面本身。 – 2011-01-06 01:10:05