HTTP1.0
特点
优点
- 简单
HTTP基本的报文格式就是 header + body。 - 灵活和易于扩展
HTTP协议里的各类请求方法`状态码、头字段等都是可以自定义扩展的。
同时 HTTP 由于是工作在应用层( OSI 第七层),则它下层可以随意变化。 - 应用广泛和跨平台
缺点
- 无状态
服务器不会去记忆 HTTP 的状态,所以不需要额外的资源来记录状态信息
但是会导致它在完成有关联性的操作时会非常麻烦。
例如登录->添加购物车->下单->结算->支付,这系列操作都要知道用户的身份才行。
但服务器不知道这些请求是有关联的,每次都要问一遍身份信息。
无状态的问题解决方法有cookie/session/token 具体见下方讲解
- 不安全
- 明文传输
内容可能会被窃听。比如,账号信息容易泄漏,那你号没了。
- 不验证通信方的身份
可能会遭遇伪装。比如,访问假的淘宝、拼多多,那你钱没了。
- 无法证明报文的完整性
有可能已经遭到篡改。比如,网页上植入垃圾广告,视觉污染,眼没了。
安全问题HTTPS得到了解决。
- 无连接
浏览器的每次请求都要与服务器建立一个TCP连接,服务器完成请求处理后立即断开TCP连接。
每个TCP只能发送一个请求。发送数据完毕,连接就关闭。如果还要请求其他资源,就需要再建立一个连接。
TCP三次握手是一个很耗费时间的过程,所以HTTP/1.0性能比较差。
请求报文
- 请求行由请求方法、URL 和 HTTP协议版本三个字段组成。中间由空格隔开。例如:GET /index.html HTTP/1.1。
HTTP协议的请求方法有GET、POST、HEAD、PUT、DELETE、OPTIONS、TRACE、CONNECT。
常见的:
- GET
- 当客户端要从服务器读取文档时,点击网页上的链接或者通过在浏览器的地址栏输入网址来浏览网页,都是GET方式。
- GET方法要求服务器将URL定位的资源放在响应报文的数据部分,会送给客户端。
- 使用GET方法时,请求参数和对应的值附加在URL后面,以一个(?)代表URL的结尾与请求参数的开始,传递参数长度受限制。例如:/index.jsp?id=100&op=bind.