java spring 框架的 http 客户端似乎默认发送这个 Accept 头:
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 发送了错误的 Accept: header ?
最佳答案
我认为答案是否定的。 HTTP 的允许值在 https://www.greenbytes.de/tech/webdav/rfc7231.html#rfc.section.5.3.2 中定义,并且“*+json”不是一个有效的子类型(即使是,它也只会匹配子类型“*+json”,而不是所有以“+json”结尾的子类型)。
关于http - "application/*+json"是 HTTP 中的有效 Accept header 吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48277752/