YII 2,不允许的方法 (#405)

Posted

技术标签:

【中文标题】YII 2,不允许的方法 (#405)【英文标题】:YII 2, Method Not Allowed (#405) 【发布时间】:2017-10-01 07:30:39 【问题描述】: 当我在 GridView 中删除记录时,我的主机出现此错误 服务器。 本地工作没有问题。

我不明白的是:

错误说 -> 方法不允许。这个网址只能处理 以下请求方法:POST。

当我查看我的代码时:

public function behaviors()
    
        return [
            'verbs' => [
                'class' => VerbFilter::className(),
                'actions' => [
                    'delete' => ['POST'],
                ],
            ],
        ];
    

它的帖子?!

当我更改为 GET 时,它可以正常工作,但也没有删除确认提示......

我有问题:

为什么我收到一条消息 -> 只允许发布,当它是发布时? 当我更改为 GET 时,如何获得删除确认

抱歉我的英语不好,非常感谢您的帮助。

【问题讨论】:

你确定本地和远程主机是一样的吗?远程主机上没有特殊的 Web 服务器配置?你能告诉我们调用删除 URL 的代码吗? 检查 fpr 两个配置(本地主机和服务器)文件..你能不能有不同的值..让我知道 是否有任何 javascript 错误? 在此处发布您的查看页面。 我遇到了同样的错误,它在我的本地主机上运行良好,实际上在我的测试服务器上运行良好,但是当我上传到我的客户端服务器时,我遇到了同样的问题。 【参考方案1】:

您可能在控制器 behaviors 方法中设置了一个 VerbFilter 方法,这会阻止使用 GET 方法调用 delete 操作。

类似的东西:

public function behaviors()

    return [
        'verbs' => [
            'class' => \yii\filters\VerbFilter::className(),
            'actions' => [
                'index'  => ['GET'],
                'view'   => ['GET'],
                'create' => ['GET', 'POST'],
                'update' => ['GET', 'PUT', 'POST'],
                'delete' => ['POST', 'DELETE'],
            ],
        ],
    ];

你可以阅读更多关于VerFilterhere的信息

你必须选择:

    behaviors 方法中删除 VerbFilter 您可以将data-method="post" 属性添加到您的链接中,这将触发POST 请求而不是GET

【讨论】:

以上是关于YII 2,不允许的方法 (#405)的主要内容,如果未能解决你的问题,请参考以下文章

405 方法不允许 Web API 2

ASP.NET Core 2.2 WebAPI 405 方法不允许

discord.errors.HTTPException:405 方法不允许(错误代码:0):405:方法不允许

405 方法不允许 - ASP.NET Web API

在 Laravel 5.2 上路由文件路径时出现 405(不允许的方法)

WebApi 2 HttpPut,HttpDelete,HttpPost无法正常工作-HTTP错误405.0 - 方法不允许