目录
8.Content-Type 和 POST 提交数据方式的关系
1.HTTP和HTTPS
HTTP 协议是用于从网络传输超文本数据到本地浏览器的传送协议,它能保证高效而准确地传送超文本文档。
HTTPS 协议是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP 下加入 SSL 层,简称为 HTTPS。HTTPS 的安全基础是 SSL,因此通过它传输的内容都是经过 SSL 加密的。
2.HTTP请求过程
浏览器向网站所在的服务器发送了一个请求,网站服务器接收到这个请求后进行处理和解析,然后返回对应的响应,接着传回给浏览器。响应里包含了页面的源代码等内容,浏览器再对其进行解析,便将网页呈现了出来。
3.请求
由四部分组成: 请求方法method,网址url,请求头header,请求体body
4.get、post请求方法
get请求:请求页面,并返回页面内容。
post请求:大多用于提交表单、上传文件,数据包含在请求体。
5.get、post请求方法的区别
get请求的参数放在url中,可以在url直接看到数据。post请求的参数放在请求体body中。
get请求提交的数据最多为1024字节,post对数据大小没限制。
6.Cookie 头信息
是网站为了辨别用户进行会话跟踪而存储在用户本地的数据。它的主要功能是维持当前访问会话。例如,我们输入用户名和密码成功登录某个网站后,服务器会用会话保存登录状态信息,后面我们每次刷新或请求该站点的其他页面时,会发现都是登录状态,这就是Cookies的功劳。Cookies里有信息标识了我们所对应的服务器的会话,每次浏览器在请求该站点的页面时,都会在请求头中加上Cookies并将其发送给服务器,服务器通过 Cookies 识别出是我们自己,并且查出当前状态是登录状态,所以返回结果就是登录之后才能看到的网页内容。
7.Content-Type 头信息
在请求中 (如POST 或 PUT),客户端告诉服务器实际发送的数据类型。例如,text/html 代表 HTML 格式,image/gif 代表 GIF 图片,application/json 代表 JSON 类型。
在响应中,Content-Type标头告诉客户端实际返回的内容的内容类型。
8.Content-Type 和 POST 提交数据方式的关系
application/x-www-form-urlencoded | 使用表单提交数据 |
multipart/form-data | 使用表单上传文件 |
application/json | 序列化JSON数据 |
text/xml | XML数据 |
9.响应
由三部分组成:响应状态码 status code,响应头 header,响应体 body
10.常见响应状态码
2XX | Success(成功状态码) |
3XX | Redirection(重定向状态码) |
4XX | Client Error(客户端错误状态码) |
5XX | Server Error(服务器错误状态码) |
11.HTTP 的无状态特点
HTTP 协议对事务处理是没有记忆能力的,服务器不会记录前后状态的变化,也就是缺少状态记录。这意味着如果后续需要处理前面的信息,则必须重传,这也导致需要额外传递一些前面的重复请求,才能获取后续响应。
为了保持 HTTP 连接状态,出现了 Session 和 Cookies 两个技术。
12.Session
Session 在服务端,也就是网站的服务器,用来保存用户的 Session 信息;
在Web中,Session 用来存储特定用户Session所需的属性及配置信息。这样,当用户在应用程序的Web页之间跳转时,存储在Session对象中的变量将不会丢失,而是在整个用户Session中一直存在下去。当用户请求来自应用程序的Web页时,如果该用户还没有Session,则Web服务器将自动创建一个Session对象。当Session过期或被放弃后,服务器将终止该 Session。
13.Cookies
Cookies在客户端,也可以理解为浏览器端,是指某些网站为了辨别用户身份、进行 Session 跟踪而存储在用户本地终端上的数据。
有了Cookies,浏览器在下次访问网页时会自动附带上它发送给服务器,服务器通过识别 Cookies 并鉴定出是哪个用户,然后再判断用户是否是登录状态,进而返回对应的响应。
14.登录 Session 控制
登录 Session 控制,需要 Cookies 和 Session 配合,一个处于客户端,一个处于服务端,共同协作来完成。具体:
在成功登录某个网站时,服务器会告诉客户端设置哪些Cookies信息,在后续访问页面时客户端会把Cookies发送给服务器,服务器再找到对应的Session加以判断。如果Session中的某些设置登录状态的变量是有效的,那就证明用户处于登录状态,此时返回登录之后才可以查看的网页内容,浏览器再进行解析便可以看到了。
反之,如果传给服务器的 Cookies 是无效的,或者 Session 已经过期了,我们将不能继续访问页面,此时可能会收到错误的响应或者跳转到登录页面重新登录。
15.HTTP协议特点小结
1:灵活且易扩展,他的头部字段很多都是可定制且可扩展
2:应用广泛。各个领域都有涉及。"跨平台,跨语言"
3:无状态。没有记忆功能,少功能即少占用资源。另外无状态更容易搭建集群,通过负载均衡将请求转发到任意一台服务器。缺点是无法支持需要连续步骤的"事务"操作。我们知道TCP协议有11种状态,不同状态代表通信过程中不同的含义。同样操作系统中的进程也有执行,就绪,活动阻塞等多种状态。但是HTTP全程都是"懵逼"无状态。比如小华请求服务器获取视频X,服务器觉得可行就发给小华。小华还想获取视频Y,这时服务器不会记录之前的状态,也就不知道这两个请求是否是同一个,所以小华还得告诉服务器自己的身份。
4:明文。优点是能让开发人员通过wireshark工具更直观的调试。缺点即裸奔互联网,没隐私可言。
5:可靠传输。HTTP为应用层协议,基于TCP/IP,而TCP为“可靠”传输协议,因此HTTP能在请求应答中"可靠"传输数据。
6:应用层协议。应用层协议很多,其中常用的邮件协议SMTP,上传下载文件ftp,默认端口22/23,SSH远程登录(XSHELL)。这些应用层协议都太专一,而HTTP通过各种头部字段,实体数据的组合,并综合缓存代理等功能,不得不说是网络中的冠希哥。