【发布时间】:2021-02-16 03:17:01
【问题描述】:
我想将 React 与 Yii2 RESTful 一起使用,我创建了一个这样的用户控制器:
<?php
namespace app\controllers;
use yii\rest\ActiveController;
class UsersController extends ActiveController
{
public $modelClass = 'app\models\User';
}
当在浏览器中打开链接显示我的用户时,当我想在反应中使用 axios 时,我在浏览器控制台中收到错误:
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://localhost/rest/web/users. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).
但是当我在 Firefox 开发者工具中检查 network 时,我发现 axios 请求和它的状态为 200 并正确接收响应。
我尝试在我的控制器中使用behaviors 函数,如下所示:
public function behaviors()
{
return [
'corsFilter' => [
'class' => \yii\filters\Cors::className(),
'cors' => [
'Origin' => ['*'],
'Access-Control-Request-Method' => ['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'HEAD', 'OPTIONS'],
'Access-Control-Request-Headers' => ['*'],
],
],
];
}
但报错
Invalid Argument – yii\base\InvalidArgumentException 响应内容 不能是数组。
我该如何解决这个问题?
【问题讨论】:
-
那么当前的问题是什么是无效参数的例外?
-
React 无法得到 rest 响应并得到错误 'Cross-Origin Request Blocked...'
-
添加行为后,我得到 Invalid Argument 错误