作者回复: 按照Content-Length得到总上传字节数,再根据TCP write函数返回的累加字节数,可以得到已上传百分比
作者回复: 理论上可以,但实际上没有可行性,因为没有必要做URL编码(URL编码请参照第11课),URL编码效率很低,空间大消耗带宽也大CPU消耗也大
作者回复: 要看具体的编程语言了。 1、HTML表单是一个协议规范,各种语言都可以使用。自由度很大的语言里,你可以选择边读边传,具体做法的原因,基于你读取文件时,可以设置offset偏移量。比如1个100M的文件,第1次0-2M,第2次读2-4M,以此类推。 2、如Linux操作系统,还可以通过sendfile方法,由操作系统帮你完成这一操作。具体做法是,把 tcp连接socket,以及open file后的句柄都传给sendfile,即可。 3、如果你是用自由度很低的语言,例如js,这受制于浏览器的策略(防止恶意js脚本读取本地文件),你可以参考较新的版本,例如HTML5来操作。
作者回复: 简单来说,有些实现不当的代理服务器,希望获取表单内容,但没有正确的解析出表单
作者回复: 我的NGINX配置改了下,现在这个URL可以访问了,你再试下
作者回复: 不算,表单提交只是浏览器在帮忙编码,由于广为使用,服务器框架对其支持都比较好。如果自行编码,只是实现会稍麻烦些。
作者回复: 就1个请求,但TCP协议层会自动拆分为多个IP报文。 在第3部分HTTP2协议可以看到,HTTP2会将1个请求拆分成多个DATA FRAME帧
作者回复: 是的,这块协议上没有做限制的,但服务器可能会做限制
作者回复: 是的,或者说,传输明文时抓包可以直接看到,而传输密文时,只有明确加密算法以及密钥,才能解密得到明文
作者回复: 实际传输的是二进制,以16进制显示时,主要用于分析报文头部,例如websocket帧就必须分析16进制格式及2进制格式(43课),而http2的帧格式也需要,例如hpack头部压缩格式(57-60课),第5、6部分课程必须全程分析16进制报文头部