You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Yii2中OPTIONS请求全量记录列表接口返回405异常问题

问题根因

这是URL规则配置错误导致的,核心问题有两个:

  • 第二条yii\rest\UrlRule自定义patterns时,错误将OPTIONS方法直接绑定到了index动作。Yii2 REST的OPTIONS请求需要路由到控制器内置的options动作返回允许的方法列表,而index动作(yii\rest\IndexAction)本身只允许GET、HEAD请求,收到OPTIONS请求会直接抛出405异常。
  • 第二条规则未关闭默认的pluralize=>true配置,也没有手动指定路径前缀,默认只会匹配复数路径/users,无法覆盖单数路径/user的列表请求,和你预期的「单复数路径同时支持访问」需求不符。

另外你的User模型规则里还有一处笔误,和当前405问题无关但会影响后续接口使用:最后一条safe规则里把status、created_at两个字段写在了同一个字符串中,Yii会将其识别为单个名为status,created_at的字段,导致这两个字段无法正常批量赋值。

修复步骤
  • 调整urlManager中第二条REST规则的配置,修正patterns的路由逻辑,同时配置前缀支持单复数路径访问,修正后的完整urlManager规则配置如下:
'urlManager' => [
    'enablePrettyUrl' => true,
    'enableStrictParsing' => true,
    'showScriptName' => false,
    'rules' => [
        [
            'class' => 'yii\rest\UrlRule',
            'controller' => 'user',
            'pluralize' => false,
            'except' => ['index'],
        ],
        [
            'class' => 'yii\rest\UrlRule',
            'controller' => 'user',
            'pluralize' => false,
            'prefix' => 'user,users', // 同时匹配/user、/users两个根路径
            'patterns' => [
                'GET,HEAD' => 'index',
                '' => 'options', // 根路径OPTIONS请求统一走内置options动作
            ],
        ],
    ],
],
  • 修正User模型rules里的字段笔误,把最后一条safe规则调整为:
[['password_hash', 'password_reset_token', 'verification_token', 'auth_key', 'status', 'created_at', 'updated_at', 'password'], 'safe'],

配置完成后,OPTIONS /users、OPTIONS /user都会正常返回200状态码和对应的允许方法头,GET /user、GET /users也都能正常访问列表接口,单资源路径的原有逻辑不受影响。

内容的提问来源于stack exchange,提问作者trejder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 11:06:28