0

客户已请求通过 Web 界面和 REST API 提供完全相同的端点。

只有在登录时使用 Web 浏览器才能看到相同的端点。通过 REST API 访问它时,必须提交有效的访问令牌。

此特定端点的规则定义如下:

[
    'class' => 'yii\rest\UrlRule',
    'controller' => 'site',
    'pluralize' => false,
    'extraPatterns' => [
        'POST upload-raw-data' => 'uploadRawData'
    ],
]

现在,当我尝试访问此端点时,我得到了以下结果:

  • 浏览器:没问题
  • 邮递员 / POST:404 错误
  • 邮递员/GET:没问题
  • 在启用 enableStrictParsing 的情况下尝试相同的操作时,我到处都是 404 错误。

    如果我需要提供代码的其他部分,我会很乐意提供。

    4

    1 回答 1

    0

    我想我找到了解决问题的方法。问题似乎是 CSRF 验证。

    通过在 beforeAction() 中为此特定操作禁用它,POST 调用将按预期运行。

    public function beforeAction($action) {
        if ($action->id == 'upload-raw-data')
            Yii::$app->controller->enableCsrfValidation = false;
    
        return parent::beforeAction($action);
    }
    

    来源:https ://gist.github.com/guerreiro/9e9cb3154b9047f5d2a0

    于 2017-09-04T10:41:34.520 回答