【问题标题】:YII 2, Method Not Allowed (#405)YII 2,不允许的方法 (#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 错误?
  • 在此处发布您的查看页面。
  • 我遇到了同样的错误,它在我的本地主机上运行良好,实际上在我的测试服务器上运行良好,但是当我上传到我的客户端服务器时,我遇到了同样的问题。

标签: post get yii2 http-status-code-405


【解决方案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的信息

你必须选择:

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

【讨论】:

    猜你喜欢
    • 2016-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-21
    • 1970-01-01
    • 2016-04-18
    • 2021-12-20
    • 2014-12-26
    相关资源
    最近更新 更多