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

Chrome/Safari/Edge/Postman Http Header very strange behaviour

响应请求的代码如下:

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

这里有趣的是,在 browser/client 上,当涉及特殊字符(例如 çé)时,原因短语按预期呈现,但是X-Status 没有!!!

这是 non-believers 的屏幕截图

我已经测试了无数种编码组合,但 none 有效...X-Status 只是失败...

我必须使用 X-Status 自定义 header 因为 Safari 会覆盖 StatusText...

附带的任何消息

HTTP 规范没有为 header 字段或状态行定义字符编码(嗯,不超过 US-ASCII)。如果您需要 non-ASCII 个字符,那就靠您自己了。例如,一种可靠的方法是 percent-encode。

另请注意 HTTP/2 没有状态行,因此尝试将其用于 return 信息无论如何都是 non-starter。