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。
响应请求的代码如下:
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。