gpt4 book ai didi

http - 修改 HTTP 响应的原因短语是一种好习惯吗?

转载 作者:可可西里 更新时间:2023-11-01 15:16:53 26 4
gpt4 key购买 nike

HTTP 错误具有与其数字代码关联的标准化响应字符串。例如。 404“未找到”或 500“内部服务器错误”。从 RFC 可以清楚地看出,这些字符串与错误的识别无关(只有数字代码是),但摆弄例如tornado 很明显,原因是根据错误代码自动生成的,并且 HTTPError 类中的 reason 参数存在(根据文档)使用非标准代码,这意味着您通常不应该使用它。

我的问题是:将原因字符串更改为对实际错误更具体的内容是否是一种好习惯,例如“500 无法连接到后端数据库”或“500 硬盘着火”,或者是否不鼓励这种做法,错误应保持为“500 内部服务器错误”并且负载中应包含任何其他信息?

最佳答案

HTTP/1.1

根据RFC 7230 ,HTTP/1.1 中消息语法和路由的当前引用,存在原因短语的唯一目的是提供与数字状态代码关联的文本描述客户端应忽略该原因短语内容。 RFC 还声明原因短语可以为空

请参阅下面的引用:

3.1.2. Status Line

The first line of a response message is the status-line, consistingof the protocol version, a space (SP), the status code, anotherspace, a possibly empty textual phrase describing the status code,and ending with CRLF.

status-line = HTTP-version SP status-code SP reason-phrase CRLF

[...]

The reason-phrase element exists for the sole purpose of providing atextual description associated with the numeric status code, mostlyout of deference to earlier Internet application protocols that weremore frequently used with interactive text clients. A client SHOULDignore the reason-phrase content.

reason-phrase = *( HTAB / SP / VCHAR / obs-text )

引用RFC 7231 , HTTP/1.1 协议(protocol)的语义和内容的当前引用:

6.1. Overview of Status Codes

[...] The reason phrases listed here are only recommendations --they can be replaced by local equivalents without affecting the protocol. [...]

理论上,没有什么可以阻止您更改原因短语。

然而,existing reason phrases确实广为人知并被广泛采用。假设客户应该忽略原因短语,我会说发送错误消息的地方不正确。考虑为其使用响应负载。

HTTP/2

HTTP/2 根本不支持原因短语。请参阅 RFC 7540 中的以下引述:

8.1.2.4. Response Pseudo-Header Fields

For HTTP/2 responses, a single :status pseudo-header field isdefined that carries the HTTP status code field.This pseudo-header field MUST be included in allresponses; otherwise, the response is malformed.

HTTP/2 does not define a way to carry the version or reason phrasethat is included in an HTTP/1.1 status line.

关于http - 修改 HTTP 响应的原因短语是一种好习惯吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38654336/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com