一尘不染

在IIS上向PHP发布表单时,是什么导致HTTP 405“无效方法(HTTP动词)”错误?

php

我在PHP(5.2.9-1)应用程序中有一种表单,该表单导致IIS(Microsoft-IIS / 6.0)在发布时引发以下错误:

由于使用了无效的方法(HTTP动词)来尝试访问,因此无法显示正在查找的页面。

这是HTTP 405状态代码。应用程序中的所有其他形式都可以使用,因此我认为PHP页面的IIS“动词”设置正确。

这是客户的服务器,我无权访问它来验证设置或测试代码。我所能做的就是发送客户替换文件。IIS服务器上的其他客户没有这样的问题。

表格非常简单:

<form method="post" action="index.php">
    ... fields ... 
</form>

是什么导致IIS仅在一种表单上抛出该错误,而在其他表单上运行良好?


阅读 468

收藏
2020-05-29

共1个答案

一尘不染

我设法通过FTP访问了客户的服务器,因此能够找到问题所在。

表单过帐后,我对用户进行身份验证,然后重定向到应用程序的主要部分。

Util::redirect('/apps/content');

该错误不是在表单的发布中发生的,而是在紧随其后的重定向上发生的。由于某种原因,IIS继续假定重定向的POST方法,然后将POST
/apps/content作为目录反对。

该错误消息从不指示生成错误的是以下页面-谢谢Microsoft!

解决方案是在末尾添加斜杠:

Util::redirect('/apps/content/');

然后IIS可以将重定向解析为默认文档,因为不再尝试POST到目录。

2020-05-29