1. Get 方法与Post方法的区别
1) get重点在从服务器上获取资源,post重点在向服务器发送数据
2)get传送数据是通过URL请求,以field(字段)的形式,置于URL后,并用“?”连接,多个请求数据间用"&"连接,例如http://127.0.0.1:8080/Test/login.action?name=admin&password=admin,这个过程用户是可见的;post传输数据通过Http的post机制,将字段与对应值封存在请求实体中发送给服务器,这个过程对用户是不可见的。
3)Get传输的数据量少,因为受到URL长度的限制,但效率较高;Post可以传输大量的数据,所以上传文件时只能用post方式。
4)Get是不安全的,因为URL是可见的,可能会泄漏私密信息,如密码等;Post较Get安全性较高。
5)Get方式只能支持ASCII字符,可以正确传递中文字符。
2.常见的HTTP相应的状态码
200 (成功) 服务器已经成功处理了请求。通常,这表示服务器提供了请求的网页。
300 (多种选择) 服务器根据请求可执行多种操作。服务器可根据请求者来选择一项操作,或提供操作列表供其选择。
301 永久性重定向
302 临时重定向
303 与302状态码有相似功能,只是它希望客户端在请求一个URI的时候,能通过GET方法重定向到另一个URI上
400 (错误请求) 服务器不理解请求的语法。
403 (禁止) 服务器拒绝请求。
404 (未找到) 服务器找不到请求的网页。例如,对于服务器上不存在的网页经常返回此代码。
500 (服务器内部错误) 服务器遇到错误,无法完成请求。
可以总结为
- 1xx:指示信息–表示请求已接收,继续处理。
- 2xx:成功–表示请求已被成功接收、理解、接受。
- 3xx:重定向–要完成请求必须进行更进一步的操作。
- 4xx:客户端错误–请求有语法错误或请求无法实现。
- 5xx:服务器端错误–服务器未能实现合法的请求。
3.HTTP请求的过程
1)域名解析,根据域名找到服务器IP,先是搜索浏览器域名自身的DNS缓存,没有则走下一步,操作系统自己的DNS缓存,没有则走下一步,系统hosts文件,没有则走下一步,向运营商的DNS服务器发起解析请求,没有则走下一步,运营商的DNS代替我们的浏览器发起迭代DNS解析请求。一般都会i走完这几步都差不多了。
2)发起TCP的3次握手
3)建立TCP连接后发起http请求
4)服务器相应http请求,浏览器得到html代码
5)浏览器解析html代码,并请求html代码中的资源(js,css,image)
6)浏览器对页面进行渲染呈现给用户
每次都请求都会经过 客户端的应用层(http协议)--> 客户端的传输层(tcp或udp协议) -->客户端的网络层(ip协议) --> 客户端的链路层(网卡,路由器等) --> ------------------经过dns解析,穿越多个isp(互联网服务提供商,移动,联通,电信等),各种数据交换,找到了服务器------------------- 服务器的链路层 -->服务器的网络层 -->服务器的传输层 -->服务器的应用层。 这个请求完成了。