undefined

3 POST和GET请求区别的常见误区

3.1 请求参数长度限制:GET请求长度最多1024kb,POST对请求数据没有限制

关于此点,在HTTP协议中没有对URL长度进行限制,这个限制是不同的浏览器及服务器由于有不同的规范而带来的限制。

3.2 GET请求一定不能用request body传输数据

GET可以带request body,但不能保证一定能被接收到。如果你用GET服务,在request body偷偷藏了数据,不同服务器的处理方式也是不同的,有些服务器会帮你读出数据,有些服务器直接忽略。

3.3 POST比GET安全性要高

这里的安全是相对性,通过GET提交的数据都将显示到URL上,页面会被浏览器缓存,其他人查看历史记录会看到提交的数据,而POST不会。另外GET提交数据还可能会造成CSRF攻击。

3.4 GET产生一个TCP数据包,POST产生两个TCP数据包

对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200 OK(返回数据);
而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 OK(返回数据)。注意,尽管POST请求会分两次,但body 是紧随在 header 后面发送的,根本不存在『等待服务器响应』一说

4 POST和GET请求的区别小结

请求参数:GET请求参数是通过URL传递的,多个参数以&连接,POST请求放在request body中。
请求缓存:GET请求会被缓存,而POST请求不会,除非手动设置。
收藏为书签:GET请求支持,POST请求不支持。
安全性:POST比GET安全,GET请求在浏览器回退时是无害的,而POST会再次请求。
历史记录:GET请求参数会被完整保留在浏览历史记录里,而POST中的参数不会被保留。
编码方式:GET请求只能进行url编码,而POST支持多种编码方式。
对参数的数据类型:GET只接受ASCII字符,而POST没有限制。

查看更多

undefined

HTTP 和 HTTPS 区别

HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全,为了保证这些隐私数据能加密传输,于是网景公司设计了SSL(Secure Sockets Layer)协议用于对HTTP协议传输的数据进行加密,从而就诞生了HTTPS。简单来说,HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全。

  1. HTTPS 协议需要申请 CA 证书
  2. HTTP 时超文本传输协议,信息是明文传输,安全性差;HTTPS(SSL + HTTP)数据传输过程是加密的,安全性较好
  3. HTTP 页面响应速度比 HTTPS 快,主要因为 HTTP 使用 TCP 三次握手建立连接,客户端和服务器交换 3 个包即可。而 HTTPS 除了三次握手的 3 个包之外,还需要 SSL 握手的 9 个包,所以一共是 12 个包
查看更多

undefined

1. 使用 multipart/form-data 上传文件

multipart/form-data 上传文件

1
2
Content-type: multipart/form-data; boundary=------WebKitFormBoundaryX3mHuP4Uhvo8Zy3O
body: "--------WebKitFormBoundaryX3mHuP4Uhvo8Zy3O\r\n" + "xxxxxxxxx" + "--------WebKitFormBoundaryX3mHuP4Uhvo8Zy3O--\r\n";

boundary 是一个字符串,用来切分数据

undefined

TLS 1.2 协议

TLS 包含几个子协议,由几个不同职责的模块组成,比较常见的有记录协议、警报协议、握手协议、变更密码规范协议等

  • 记录协议:规定了 TLS 收发数据的基本单位:记录(record)。它有点像是 TCP 里的 segment,所有的其他子协议都需要通过记录协议发出。但多个记录数据可以在一个 TCP 包里一次性发出,也并不需要像 TCP 那样返回 ACK。
  • 警报协议:职责是向对方发出警报信息,有点像是 HTTP 协议里的状态码。比如,protocol_version 就是不支持旧版本,bad_certificate 就是证书有问题,收到警报后另一方可以选择继续,也可以立即终止连接。
  • 握手协议:TLS 里最复杂的子协议,要比 TCP 的 SYN/ACK 复杂的多,浏览器和服务器会在握手过程中协商 TLS 版本号、随机数、密码套件等信息,然后交换证书和密钥参数,最终双方协商得到会话密钥,用于后续的混合加密系统。
查看更多

undefined

TLS 1.3 协议

TLS 1.3 主要改进目标:兼容、安全和性能

一、最大化兼容

TLS 1.3 为了向前兼容,新增了一个扩展协议,通过在记录末尾添加一系列的“扩展字段”来增加新的功能,老版本的 TLS 不认识它可以直接忽略。

在记录头的Version 字段被兼容性固定的情况下,只要是 TLS 1.3 协议,握手的“Hello”消息后面就必须有“supported_version”扩展,它标记了 TLS 的版本号,使用它就可以区分新旧协议。

二、强化安全

TLS 1.2 在十年的应用中发现了很多漏洞和加密算法的弱点。所以在 TLS 1.3 中进行了修补,比如

查看更多