方法不允许 (405) 即使在 NGINX 上发布到 php 文件时也是如此
Posted
技术标签:
【中文标题】方法不允许 (405) 即使在 NGINX 上发布到 php 文件时也是如此【英文标题】:Method Not Allowed (405) even when posting to a php file on NGINX 【发布时间】:2012-01-15 11:30:27 【问题描述】:我一直在谷歌搜索,我只能发现当您发布到 html 文件时可能会发生此错误。在我的设置中,我有一个重写规则,它基本上从 url 中隐藏了 index.php 文件,我很长一段时间都认为它与此有关。 Get 工作正常,但由于某种原因 Get 不适用于 OpenID。
方法不允许
URL /post.php 不允许 POST 请求
这是我的设置:
Debian squeeze / AMD64
nginx version: nginx/1.1.8
PHP 5.3.3-7+squeeze3 with Suhosin-Patch (cli) (built: Jun 28 2011 08:24:40)
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
with Suhosin v0.9.32.1, Copyright (c) 2007-2010, by SektionEins GmbH
【问题讨论】:
【参考方案1】:我遇到了同样的错误。
我的问题是 POST 函数不接受第二个参数
function someForm($f3, $args)
//some Process
【讨论】:
【参考方案2】:我自己解决了这个问题!
我安装了 lighttpd,但在使用 lighttpd 时又遇到了同样的错误。 我查看了所有错误的地方,因为错误 405 是网络服务器错误。
然而,我刚开始使用一个名为 fatfree F3 的新 php 框架,当你像这样使用 GET 时,这个框架会产生错误:
F3::route('GET /autho/idreply', 'auth.php');
GET 意味着框架只需要 GET 变量并且会拒绝 POST 变量。
出现服务器错误 405,即!
所以将其更改为,以下是诀窍:
F3::route('POST /auth/oidreply', 'auth.php');
你甚至可以让框架接受这两个命令或其中一个;
F3::route('GET|POST /auth/oidreply', 'auth.php');
【讨论】:
以上是关于方法不允许 (405) 即使在 NGINX 上发布到 php 文件时也是如此的主要内容,如果未能解决你的问题,请参考以下文章
Laravel 5.1 AJAX - 即使我发送 POST 请求,也不允许返回 405 GET 方法
WCF REST 服务返回 405:jQuery AJAX GET 不允许的方法
加载资源失败:服务器响应状态为 405(不允许)需要有关 nginx.conf 的帮助