Yii2-更改标题集合

mac*_*lan 2 php yii2

我想更改我的RESTful API中的默认标头集合。我可以在发送的每个响应上使用set()方法更改标头,但我不想写

$response = Yii::$app->response;
$response->headers->set('X-Powered-By','My server <devel>')
$response->setStatusCode(somecode);
$response->data = somedata;

return $response;
Run Code Online (Sandbox Code Playgroud)

这非常麻烦,并且我的Controller动作会不断增加,因为我必须响应每个错误的请求和错误。我试图更改rest / config / main.php中的响应组件,但是我禁止更改headers属性,因为它是只读的。

  • setStatusCode()方法非常有用,因为它会自动返回状态文本。

请帮忙。

spi*_*yjt 5

您无需费心扩展响应类。您可以通过配置response应用程序的组件并在beforeSend事件中添加自定义标头来实现此目的,例如:

return [
    ...
    'components' => [
        ...
        'response' => [
            'on beforeSend' => function($event) {
                $event->sender->headers->add('X-Frame-Options', 'DENY');
            },
        ],
        ...
    ],
];
Run Code Online (Sandbox Code Playgroud)

这将为所有响应添加标题。如果要针对每个控制器执行此操作,则可以\Yii::$app->response->headers->add($name, $value);afterAction()控制器的方法中使用。