安全问题
超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息,HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此,HTTP协议不适合传输一些敏感信息,比如:信用卡号、密码等支付信息
为了解决HTTP协议的这一缺陷,需要使用另一种协议:安全套接字层超文本传输协议HTTPS,为了数据传输的安全,HTTPS在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密
HTTP
HTTP是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少
HTTP/1.0和HTTP/1.1的区别
HTTP协议老的标准是HTTP/1.0,目前最通用的标准是HTTP/1.1
HTTP1.0只保持了短暂的连接,浏览器每次请求都需要与服务器建立一个TCP连接,但最新的HTTP/1.1加入了长连接,只需要客户端给服务器发送的HTTP报文头部加入Connection: keep-alive
即可,HTTP/1.1支持持久连接,默认进行持久连接,在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟
HTTPS

流程如下:
- 客户使用HTTPS的URL访问Web服务器,要求与Web服务器建立SSL连接
- Web服务器收到客户端请求后,会将网站的证书信息(证书中包含公钥)传送一份给客户端
- 客户端的浏览器与Web服务器协商SSL连接的安全等级,也就是信息加密的等级
- 客户端的浏览器根据双方同意的安全等级,建立会话密钥,然后利用网站的公钥将会话加密,并传送给网站
- Web服务器利用自己的私钥解密出会话密钥
- Web服务器利用会话密钥加密与客户端之间的通信
HTTP的请求方法
HTTP的请求方法包括GET
,POST
,PUT
和DELETE
四种基本方法
GET | POST |
---|---|
不会修改服务器上的资源,无副作用 | 可能会修改服务器上的资源,有副作用 |
可以保存为书签,可以用缓存优化 | |
把参数附在URL上 | 把参数附在HTTP包的包体中 |
浏览器和服务器一般对GET方法提交的ULR长度有限制,一般是1K或者2K | 浏览器和服务器对POST方法所传递的参数限制为80K到4M不等 |
GET的参数一般只支持ASCII | 可以传输二进制编码信息 |
HTTP状态码
状态码 | 英文名称 | 描述 |
---|---|---|
200 | OK | 请求成功,一般用于GET和POST请求 |
204 | No Content | 无内容,服务器处理成功,但未返回内容 |
206 | Partial Content | 对资源的一部分的请求成功 |
301 | Moved Permanently | 请求的资源已经被永久移动到新的URI,返回的信息包括新的URI,浏览器会自动定向到新的URI,今后任何新的请求都会用新的URI代替 |
302 | Found | 临时重定向 |
304 | Not Modified | |
307 | Temporary Redirect | |
400 | Bad Request | |
401 | Unauthorized | |
402 | Payment Required | |
403 | Forbidden | |
404 | Not Found | 找不到资源 |
500 | Internal Server Error | 服务器内部错误,无法完成请求 |
501 | Not Implemented | 不支持请求的功能 |
503 | Service Unavailable | 由于超载或者系统维护,服务器暂时无法处理客户端的请求 |