今天看到群里分享了知乎的帖子。前面讲的都很不错,只是有一处争论比较大
对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);
而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。
和群里的小伙伴讨论了下,大家都比较懵逼,开始求证。
翻看各种帖子
- Http rfc 8.2
- rfc 9.5
- php实现curl的帖子。
看完各种资料后,个人觉得发送2次tcp请求不是http协议要求的。只是说post和put可以设置这个header,如果设置了需要发送个100的header请求,然后在接受body前会做次Expect:100-continue
验证,然后再继续发送body体,这对大文件上传是有很好的性能提升,比如大文件上传的前置权限校验。
得出结论继续求证,问了下公司UC浏览器的开发同学,UC对get和post是一次性发送,所以以上推断是对的,是客户端来进行实现,http协议提供了对post和put可以设置100的response header。
image.png
网友评论