Chrome / Safari / Edge / Postman Http Header非常奇怪的行为

时间:2015-10-08 20:44:41

标签: c# asp.net asp.net-mvc http http-headers

响应请求的代码如下:

return new HttpStatusCodeResult(ex.Detail.HttpStatusCode, ex.Detail.ReasonPhrase);
Response.AddHeader("X-Status", ex.Detail.ReasonPhrase);

这里有趣的是,在浏览器/客户端上,当涉及到特殊字符(例如çé)时,原因短语会按预期呈现,但X -Status不!!!“

这里是非信徒的屏幕截图 enter image description here

我已经测试了无数个编码组合,但都没有工作...... X-Status刚刚失败......

我必须使用X-Status自定义标头,因为Safari会覆盖StatusText附带的任何消息......

1 个答案:

答案 0 :(得分:1)

HTTP规范没有为头字段或状态行定义字符编码(嗯,不超出US-ASCII)。如果您需要非ASCII字符,那么您就是自己的。例如,一种可靠的方法是百分比编码。

另请注意,HTTP / 2没有状态行,因此无论如何,尝试使用它来返回信息都是非启动的。