HTTP/2流是否允许多个set-cookie头?代理场景处理咨询
问题1:HTTP/2流中允许多个set-cookie头存在吗?
当然允许!其实HTTP/2在set-cookie头的处理上和HTTP/1.1保持了一致——set-cookie是少数几个被明确允许重复出现的HTTP头字段之一。这是因为每个set-cookie都对应一条独立的Cookie设置指令,比如设置不同的Cookie键值对、过期时间或者作用域,把它们合并反而会导致客户端解析出错。
问题2:HTTP/2客户端→代理→HTTP/1.1服务器场景下,如何处理多个set-cookie?
直接原样传递多个set-cookie头就好,完全不需要合并!
虽然HTTP/2用二进制帧和HPACK压缩来传输头信息,但协议本身支持重复的头字段(尤其是set-cookie这种特殊字段)。你只需要把从HTTP/1.1服务器收到的每一条set-cookie条目,作为独立的头字段添加到HTTP/2响应里返回给客户端就行。
关键提醒:千万别合并!
如果把多个set-cookie值用逗号合并成单个头字段,客户端解析时会出问题——Cookie规范明确要求每个Cookie必须通过单独的set-cookie头来设置,合并后的格式不符合标准,客户端大概率会忽略这些Cookie,或者解析出错误的内容。
内容的提问来源于stack exchange,提问作者ioquatix
相关产品推荐
相关产品推荐

