文章目录
1.HTTP和HTTPS协议
1.1 HTTP和HTTPS区别
协议 | http | https |
---|---|---|
1 | 超文本传输协议,信息是明文传输 | https则由http+ssl(Secure socket layer(SSL)组成,对传输的数据进行加密,保证数据安全 |
2 | 80 | 443 |
3 | http不需要证书 | 需要ca证书 |
1.2 HTTPS工作原理
-
客户端向服务器发送 HTTPS 请求。
-
服务器将公钥证书发送给客户端。
-
客户端验通过自身的CA证书验收到的公钥证书是否可信。
-
如果验证通过,客户端生成一个用于会话的对称密钥。
-
客户端使用服务器的公钥对对称密钥进行加密,并将加密后的密钥发送给服务器。
-
服务器使用私钥对客户端发送的加密密钥进行解密,得到对称密钥。
-
服务器和客户端使用对称密钥进行加密和解密数据传输。
参考
1.3 HTTP的长连接和短连接
如何区分http请求时长连接还是短连接
Connection:Keep-alive #保持tcp不断开
content-length:数据长度
tarnsfer-encoding:chunked
1.4 HTTP的无状态
HTTP本身是无状态的协议,但通过Cookie的使用可以实现一定程度的状态保持功能
1.5 NGINX 如何配置HTTPS
server {
listen 443 ssl; # 服务器端口使用443,开启ssl, 这里ssl就是上面安装的ssl模块
server_name xiaopawnye.com www.xiaopawnye.com;# 域名,多个以空格分开
# ssl证书地址
ssl_certificate /usr/local/nginx/cert/ssl.pem; # pem文件的路径
ssl_certificate_key /usr/local/nginx/cert/ssl.key; # key文件的路径
# ssl验证相关配置
ssl_session_timeout 5m; #缓存有效期
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; #加密算法
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #安全链接可选的加密协议
ssl_prefer_server_ciphers on; #使用服务器端的首选算法
return 301 https://$server_name$request_uri; # 将 http 重定向 https
location / {
root html;
index index.html index.htm;
}
}
参考
1.Nginx 安装 SSL 配置 HTTPS 超详细完整全过程
3.状态码
状态码 | 含义 | 常用的状态码 |
---|---|---|
1** | 信息,服务器收到请求,需要请求者继续执行操作 | |
2** | 成功,操作被成功接收并处理 | |
3** | 重定向,需要进一步的操作以完成请求 | 301永久重定向 302临时重定向 304不能修改 |
4** | 客户端错误,请求包含语法错误或无法完成请求 | 401未认证 403认证成功但被禁止 405未定义请求方式 |
5** | 服务器错误,服务器在处理请求的过程中发生了错误 | 500服务异常异常在框架中直接抛出 502网关错误 503服务不可用 |
4.请求方法
4.1 请求方法的特点
请求方法特点 | 定义 | 支持特点的方法 |
---|---|---|
幂等性 | 多次执行的结果和一次执行的结果相同称之为幂等 | 除了post和pach方法其余方法都是幂等方法 |
安全性 | 请求方法是否修改数据 | option,get,head |
4.2 GET和POST的区别
操作 | get | POST |
---|---|---|
点击返回/刷新按钮 | 没有影响 | 数据会重新发送 |
添加书签 | 可以 | 不可以 |
是否可以缓存 | 可以 | 不可以 |
历史记录 | 有 | |
长度限制 | 有 | 没有 |
数据类型限制 | 只允许ASCII字符类型 | 没有限制。 |
安全性 | 不要使用GET请求提交敏感数据 | 相比get而言Post的会更安全 |
5.cookie和session
http是无状态的((对事务处理是没有记忆能力)),怎样保持Http的连接状态
- session是保存在服务端,cookie是保存在客户端
- cookie是实现session的一种机制,通过http cookie来实现
注意
默认情况下,如果浏览器禁用了cookie,浏览器请求无法携带sessionid,服务器无法识别请求中的用户身份,session失效,但是任然可以通过把sessionid作为参数追加到原有的url中继续使用session