$headers = Yii::$app->response->headers;
// add a Pragma header. Existing Pragma headers will NOT be overwritten.
$headers->add('Pragma', 'no-cache');
// set a Pragma header. Any existing Pragma headers will be discarded.
$headers->set('Pragma', 'no-cache');
// remove Pragma header(s) and return the removed Pragma header values in an array
$values = $headers->remove('Pragma');
5条答案
按热度按时间n6lpvg4x1#
您可以通过配置应用程序的
response
组件并在beforeSend
事件中添加自定义头文件来实现此目的,例如:这将为所有响应添加头。这可能不合适,在这种情况下,您可以在从操作返回之前使用
\Yii::$app->response->headers->add($name, $value);
,或者在控制器的afterAction()
方法中使用。在我看来,如果你能在服务器端正确地设置头文件,那么就永远不要使用http-equiv。
PHP的
header()
函数不起作用的原因是Yii的响应组件在准备发送响应之前重置了所有的头。pengsaosao2#
我通过在页面的头部添加 meta数据来解决:
biswetbf3#
这里是关于如何修改YII框架(v2)发送的头的文档
http://www.yiiframework.com/doc-2.0/guide-runtime-responses.html#http-headers
HTTP标头
您可以通过在响应组件中操作标头集合来发送HTTP标头。例如,
u3r8eeie4#
在YII风格中,我们可以使用
registerMetaTag
。在视图或布局或控制器中添加以下代码。它将在head标签中添加
<meta http-equiv="X-FRAME-OPTIONS" content="DENY">
。有关
registerMetaTag
的更多详细信息,请参阅此处。1qczuiv05#
我扩展了控制器