Yii restful api跨域

时间:2021-04-26 06:21:27
问题:NO 'Access-Control_Allow-Origin' header is present on the requested resource.

解决方案

<?php

namespace app\modules\v1\controllers;

use Yii;
use yii\web\Response; class BaseAPIController extends \yii\rest\Controller
{
public $serializer = [
'class' => 'yii\rest\Serializer',
'collectionEnvelope' => 'items',
]; public function behaviors()
{
$behaviors = parent::behaviors();
$behaviors['contentNegotiator']['formats'] = [
'application/json' => Response::FORMAT_JSON
];
$behaviors['access'] = [
'class' => 'yii\filters\AccessControl',
'rules' => [
[
'allow' => true,
'matchCallback' => function ($rule, $action) {
return in_array(Yii::$app->request->hostInfo, Yii::$app->params['acceptableHosts']);
}
]
]
];
$behaviors['corsFilter'] = [
'class' => 'yii\filters\Cors',
'cors' => [
'Origin' => Yii::$app->params['acceptableHosts'],
'Access-Control-Request-Method' => ['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'HEAD', 'OPTIONS'],
'Access-Control-Request-Headers' => ['*'],
'Access-Control-Allow-Credentials' => true,
'Access-Control-Max-Age' => 86400,
'Access-Control-Expose-Headers' => [],
],
];
return $behaviors;
}
}