http请求方式

HTTPv1.1后,默认都开启了Keep-Alive,可以保存长链接,当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的连接

 Keep-Alive不会永久保持连接,它有一个保持时间,可以在不同的服务器软件(如Apache)中设定这个时间。

GET 方法

  • GET 请求可被缓存
  • GET 请求保留在浏览器历史记录中
  • GET 请求可被收藏为书签
  • GET请求只能进行URL编码,只接受ASCII字符
  • GET产生一个TCP数据包, 浏览器会把http header和data一并发送出去,服务器响应200(返回数据);
  • GET 浏览器对URL长度有限制
    1. IE浏览器对URL的最大限制为2083个字符
    2. Firefox浏览器URL的长度限制为65,536个字符。
    3. Google浏览器URL最大长度限制为8182个字符。

POST 方法

  • POST 请求不会被缓存
  • POST 请求不会保留在浏览器历史记录中
  • POST 不能被收藏为书签
  • POST 请求对数据长度没有要求,Tomcat对POST大小限制默认2M;
  • POST 支持多种编码方式
  • 点击浏览器的回退时, 数据会被重新提交
  • POST产生两个TCP数据包(Firefox就只发送一次),浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(发送2次包的TCP在验证数据包完整性上,有非常大的优点)。
  • POST不是时幂等

PUT 方法

  • PUT是幂等操作
  • PUT请求中的URI表示请求中封闭的实体-用户代理知道URI的目标,并且服务器无法将请求应用到其他资源。如果服务器希望该请求应用到另一个URI,就必须发送一个301响应;用户代理可通过自己的判断来决定是否转发该请求。

DELETE 方法

  • 删除指定资源
  • PUT是幂等操作

HEAD 方法

  • 类GET方法,不响应页面Body部分,用于获取资源的基本信息,即检查链接的可访问性及资源是否修改。
  • 只请求资源的首部
  • 检查超链接的有效性

PATCH 方法

  • PATCH方法是幂等的。
  • 对PUT方法的补充,对已知资源进行"局部更新"

常见HTTP状态码 

  1. 信息代码:1xx:
    • 100 客户端继续发送请求
    • 101 切换协议(只能切换到更高级的协议,例如,切换到HTTP的新版本协议)
  2. 成功代码:2xx:
    • 200 (成功) 服务器已成功处理了请求。 通常,这表示服务器提供了请求的网页。
    • 201 (已创建) 请求成功并且服务器创建了新的资源。
    • 202 (已接受) 服务器已接受请求,但尚未处理。
    • 203 (非授权信息) 服务器已成功处理了请求,但返回的信息可能来自另一来源。  
  3. 重定向:3xx:
    • 301(永久重定向)请求的网页已永久移动到新位置。 服务器返回此响应(对 GET 或 HEAD 请求的响应)时,会自动将请求者转到新位置。
    • 302(临时重定向) 服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。(禁止post变化get,可以用)。 
    • 303  该状态码表示由于请求对应的资源存在着另一个URI,应使用GET方法定向获取请求的资源。(http/1.1之前无法准确适用)
    • 304 (未修改) 自从上次请求后,请求的网页未修改过。 服务器返回此响应时,不会返回网页内容。 
    • 307 (临时重定向)遵照浏览器标准,不会从post变为get。
  4. 客户端错误:4xx:
    • 400(错误请求) 1、服务器不理解请求的语法,除非进行修改,否则客户端不应该重复提交这个请求。。2、请求参数有误。
    • 401(未授权) 请求要求身份验证。服务器验证拒绝了用户证书。
    • 403(禁止) 服务器拒绝请求。  
    • 404(未找到) 请求失败,请求所希望得到的资源未被在服务器上发现。服务器找不到请求的网页。
    • 405(方法禁用) 禁用请求中指定的方法。鉴于 PUT,DELETE 方法会对服务器上的资源进行写操作,鉴于 PUT,DELETE 方法会对服务器上的资源进行写操作。
    • 406(不接受) 无法使用请求的内容特性响应请求的网页。请求的资源的内容特性无法满足请求头中的条件,因而无法生成响应实体。
    • 408(请求超时) 服务器等候请求时发生超时。可以再次提交请求。
    • 410(已删除) 如果请求的资源已删除,而且没有任何已知的转发地址,服务器就会返回此响应。
    • 413(请求实体过大) 服务器无法处理请求,因为请求实体过大,超出服务器的处理能力。 
    • 414(请求的 URI 过长) 请求的 URI(通常为网址)过长,服务器无法处理。
  5. 服务器错误:5xx:
    • 500 (服务器内部错误) 服务器遇到错误,无法完成请求。  
    • 501 (尚未实施) 服务器不具备完成请求的功能。 例如,服务器无法识别请求方法时可能会返回此代码。
    • 502 (错误网关) 服务器作为网关或代理,从上游服务器收到无效响应。
    • 503 (服务不可用) 服务器目前无法使用(由于超载或停机维护)。 通常,这只是暂时状态。
    • 504 (网关超时) 服务器作为网关或代理,但是没有及时从上游服务器收到请求。
    • 505 (HTTP 版本不受支持) 服务器不支持请求中所用的 HTTP 协议版本。

HTTP中GET与POST的区别

  • GET在浏览器回退时是无害的,而POST会再次提交请求。
  • GET的url地址可以被添加为书签,而POST不可以。
  • GET请求会被浏览器主动cache, 而POSt不会,可以主动设置。
  • GET请求只能进行url编码,而POST支持多种编码。
  • GET请求的参数会被保留在浏览器的历史记录中,而POST参数不会。
  • GET请求通url传递参数,URL长度在传输中有限制,导致参数有限制,POST参数在body中不会限制。
  • GET请求的参数只支持ASCII编码,而POST没限制。
  • GET请求把参数直接暴露在URL上,比POST更不安全。
  • GET请求,浏览器会把http header 和 data一起发送出去,服务器响应为 200
  • POST请求,浏览器先发送header,服务器响应100 continue时,浏览器才会发送 data数据,服务器响应200(并不是所有浏览器都会在POST中发送两次包,Firefox就只发送一次。)
  • HTTP的底层是TCP/IP。所以GET和POST的底层也是TCP/IP,也就是说,GET/POST都是TCP链接。GET和POST能做的事情是一样一样的。你要给GET加上request body,给POST带上url参数,技术上是完全行的通的。

https 加密 (TSL 握手过程)

  • client 发送一个 https 请求,连接到443端口(客户端请求公钥)
  • server 收到请求, 通过第三方机构私钥加密,把数字证书(公钥)发个client。
  • client接收到 数字证书,通过第三方公钥进行解密,根据签名规则,对网站信息与本地签名对比,匹配为成功,不匹配显示警告信息。
  • 成功拿到服务器公钥的后,client会随机生成一个 对称秘钥,使用服务器的公钥进行加密后,发送给server。
  • server 接收后,使用自己私钥进行解密,得到 对称秘钥,支持client 和 server 用相同的 对称秘钥。
  • client 使用 对称秘钥 加密明文内容,发送给server
  • server通过 对称密码 进行解谜,得到明文内容
posted @ 2019-06-25 10:34  每次醒来的徘徊  阅读(168)  评论(0编辑  收藏  举报