"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”结尾的子类型。
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”结尾的子类型。