"application/*+json" 是 HTTP 中的有效接受 header

Is "application/*+json" a valid Accept header in HTTP

java spring 框架的 http 客户端似乎默认发送这个 Accept header:

Accept: text/plain, application/json, application/*+json, */*

我对“application/*+json”部分很好奇。我相信这样做的目的是匹配任何以 application/ 开始并以 +json 结束的 MIME 类型 - 例如。 application/vnd.api+json.

然而看着 RFC 7231 section 5.3.2 它说:

media-range    = ( "*/*"
                      / ( type "/" "*" )
                      / ( type "/" subtype )
                      ) *( OWS ";" OWS parameter )

这似乎专门只允许使用 * 而不是子类型,而不是作为它的一部分 - 建议“application/*+json”应该只匹配实际作为 * 的 mime 类型在名字里。

MIME 类型的“+”语法通常在 https://www.rfc-editor.org/rfc/rfc6839 中定义 - 但是其中似乎没有任何内容允许将其应用于 HTTP RFC 定义的通配符。

是否有其他一些 RFC 扩大了定义或 spring 发送错误的接受:header?

我认为答案是 "no"。 HTTP 的允许值在 https://www.greenbytes.de/tech/webdav/rfc7231.html#rfc.section.5.3.2 中定义,“*+json”不是有效的子类型(即使是,它也只会匹配子类型“*+json” ”,并非所有以“+json”结尾的子类型。