我在PHP(5.2.9-1)应用程序中有一个表单导致IIS(Microsoft-IIS / 6.0)在POST时抛出以下错误:
由于使用了无效的方法(HTTP动词)来尝试访问,因此无法显示您要查找的页面。
这是一个HTTP 405状态代码。应用程序中的所有其他表单都有效,因此我认为PHP页面的IIS'动词'设置是正确的。
这是客户的服务器,我无权访问以验证设置或测试代码。我所能做的就是发送客户替换文件。 IIS服务器上的其他客户没有这样的问题。
表格非常简单:
<form method="post" action="index.php">
... fields ...
</form>
什么原因导致IIS只在一个表单上抛出该错误,但在其他表单上正常工作?
答案 0 :(得分:25)
我设法让FTP访问客户的服务器,因此能够追踪问题。
表单发布后,我对用户进行身份验证,然后重定向到应用程序的主要部分。
Util::redirect('/apps/content');
错误不是发布在表单上,而是发生在紧随其后的重定向上。出于某种原因,IIS继续假设重定向的POST方法,然后反对POST到/apps/content
,因为它是一个目录。
错误消息从未表明它是生成错误的以下页面 - 感谢Microsoft!
解决方案是添加一个尾部斜杠:
Util::redirect('/apps/content/');
然后,IIS可以将重定向解析为默认文档,因为不再尝试POST到目录。
答案 1 :(得分:7)
我正在将VB6 IIS应用程序部署到具有75个文件夹的远程专用服务器。我收到此错误的原因是默认文档未设置在其中一个文件夹上,这是一个疏忽,因此访问该文件夹的URL不知道要向哪个页面服务器,因此抛出了此线程中提到的错误。
答案 2 :(得分:4)
你有没有试过POST vs post?此支持文章表明它可能会导致IIS出现问题:http://support.microsoft.com/?id=828726
答案 3 :(得分:4)
可接受的动词在<system.web><httpHandlers>
和<webServices><protocols>
中的web.config(位于网站的根目录中)中进行控制。如果存在,则可以访问Web.config。还有一个全局的server.config,可能不会。如果您可以查看其中任何一个,您可能会得到一个线索。
可接受的动词可能因内容类型而异 - 您是否在页面中设置了内容类型标题? (即如果你的Content-type是application / json,则允许使用不同的动词)
答案 4 :(得分:2)
我不知道为什么,但是当您通过POST
方法将页面内的表单提交给自己时,就会发生这种情况。
所以将method="post"
更改为method="get"
或从action="anyThings.any"
标记中删除<form>
。
答案 5 :(得分:0)
听起来服务器在处理POST请求时遇到问题(get和post是动词)。我不知道,有人会如何或为何将服务器配置为忽略发布请求,但唯一的解决方案是修复服务器,或更改应用程序以使用获取请求。
答案 6 :(得分:0)
我在Facebook应用程序中遇到此问题,我正在为粉丝页面选项卡开发。如果有人在facebook应用程序中遇到此问题,那么
1-goto https://developers.facebook.com
2 - 选择您正在开发的应用程序
3 - 确保您应用程序的所有链接都有拖尾斜线 /
我的问题出在https://developers.facebook.com-&gt;应用 - &gt; MYAPPNAME-&gt;设置 - &gt;页面标签 - &gt;安全页面标签网址,页面标签编辑网址,页面标签网址 希望这会有所帮助
答案 7 :(得分:0)
正如drewm自己所说,这是由于后来重定向POST后脚本实际上已经成功了。 (我可能已将此作为评论添加到他的答案中,但你需要50个评论的声誉,我在这里新一轮 - 愚蠢的规则恕我直言)
但如果您尝试重定向到某个页面而不仅仅是目录,它也适用 - 至少它是为我做的。我试图重定向到/thankyou.html。解决这个问题的方法是使用绝对网址,即http://example.com/thankyou.html
答案 8 :(得分:0)
我不得不将我的表格的POST更改为GET。我只是在一个测试天蓝色网站上的html页面上做了一个演示文章。阅读此信息以获取信息:http://support.microsoft.com/kb/942051
答案 9 :(得分:0)
我们只是遇到了同样的问题。我们的Cpanel已从仅PHP扩展到PHP和.NET,并默认为.NET。
登录到Cpanel,并确保您没有遇到相同的问题。
答案 10 :(得分:-4)
另一个可能的原因。
我的HTML页面有这些起始标记:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
这是在使用光滑的jquery幻灯片显示的页面上。
我删除了代码并替换为:
<html>
一切都恢复了。