我有用Yii2编写的Web应用程序。在beforeAction()内部,我想向用户设置自定义消息并说明问题:
Yii::$app->response->setStatusCode(403, 'Brak dostępu. Skontaktuj się z administratorem.');
是否可以在HTTP / 1.1响应标头中使用uft-8“原因文本”?
答案 0 :(得分:2)
RFC 7230没有提供任何有关如何解析状态行的“原因文本”元素的说明,因此没有暗示或指定编码。
ABNF语法表明,如果以任何“ ASCII兼容”编码(例如UTF-8)显示字符串,则该字符串将是有效的。
reason-phrase = *( HTAB / SP / VCHAR / obs-text )
VCHAR
的意思是“可见的ASCII字符”,obs-text
是0x80到0xFF范围内的任何字节。
但是,对于如何解释这些字节没有定义。相反,规范建议客户端根本不解析它:
原因短语元素的存在仅是为了提供一个 与数字状态代码关联的文字描述,主要是 不符合早期的Internet应用协议 更常用于交互式文本客户端。客户应 忽略原因短语内容。
所以,如果您要使用它进行低级调试或与自定义客户端一起使用,请在此处放任何您喜欢的文本。但是,如果标准客户忽略它或将其误解为其他字符编码,请不要感到惊讶。