HTTP Accept请求头如何指定多个可接受的内容类型?
关于HTTP Accept头多子类型格式的疑问解答
嘿,这个细节问题问得很到位!我来给你明确说清楚:两种写法都是完全合规且有效的,逗号后面的空格不会影响服务器的解析。
从RFC 7231规范来看
RFC 7231里对Accept头的语法定义是这样的(用ABNF表示):
Accept = #( media-range [ accept-params ] )
这里的#符号在ABNF规则里表示「一个或多个元素,元素之间用逗号分隔,且允许元素前后有可选的线性空白(LWS)」——简单说就是逗号后面加不加空格,都是符合规范的写法。
实际应用中的兼容性
不管你用带空格的格式:
Accept: type/subtypeA, type/subtypeB
还是不带空格的格式:
Accept: type/subtypeA,type/subtypeB
目前市面上主流的HTTP服务器(Nginx、Apache等)、客户端库(比如Python的requests、JS的axios、curl工具)都能正确解析这两种格式,不会出现因为空格导致的请求异常。
如果你还是担心,其实可以优先选择带空格的写法——因为可读性更好,团队协作的时候更清晰,但从技术合规性来说,两种都没问题。
内容的提问来源于stack exchange,提问作者ivan
相关产品推荐
相关产品推荐

