1、什么是http协议
客户端和服务端之间数据传输的格式规范,简称“超文本传输协议”
2、URI、URL和URN
URI包含URL和URN
- URI:统一资源标识符
- URL:统一资源定位符
- URN:统一资源名称
3、http协议由什么组成
1)、请求报文包含三部分
- 请求行:包含请求方法、URI、HTTP版本信息
- 请求头
- 请求体
2)、相应报文包含三部分
- 状态行:包含HTTP版本、状态码、状态码的原因短语
- 响应头
- 响应体
4、http常用的请求方式
- GET: 用于请求访问已经被URI(统一资源标识符)识别的资源(静态资源),可以通过URL传参给服务器。
- POST:用于传输信息给服务器,主要功能与GET方法类似,但一般推荐使用POST方式。
- PUT: 传输文件,报文主体中包含文件内容,保存到对应URI位置。
- HEAD: 获得报文首部,与GET方法类似,只是不返回报文主体,一般用于验证URI是否有效。
- DELETE:删除文件,与PUT方法相反,删除对应URI位置的文件。
- OPTIONS:查询相应URI支持的HTTP方法。
5、http1.0与http1.1的区别
- 在http1.0中,当建立连接后,客户端发送一个请求,服务器端返回一个信息后就关闭连接,当浏览器下次请求的时候又要建立连接,显然这种不断建立连接的方式,会造成很多问题。
- 在http1.1中,引入了持续连接的概念,通过这种连接,浏览器可以建立一个连接之后,发送请求并得到返回信息,然后继续发送请求再次等到返回信息,也就是说客户端可以连续发送多个请求,而不用等待每一个响应的到来。可以通过设置connection:close来关闭长连接
6、get与post的区别
区别一
- get重点在从服务器上获取资源。
- post重点在向服务器发送数据。
区别二
- get传输数据是通过URL请求,以field(字段)= value的形式,置于URL后,并用"?"连接,多个请求数据间用"&"连接,如http://127.0.0.1/Test/login.action?name=admin&password=admin,这个过程用户是可见的。
- post传输数据通过Http的post机制,将字段与对应值封存在请求实体中发送给服务器,这个过程对用户是不可见的。
区别三
- Get传输的数据量小,因为受URL长度限制,但效率较高。
- Post可以传输大量数据,所以上传文件时只能用Post方式。
区别四
- get是不安全的,因为URL是可见的,可能会泄露私密信息,如密码等。
- post较get安全性较高。
区别五
- get方式只能支持ASCII字符,向服务器传的中文字符可能会乱码。
- post支持标准字符集,可以正确传递中文字符。
7、https
http的安全隐患
- 使用明文通信,内容可能被窃听
- 不验证通信方的身份,通信方身份可能遭到篡改
- 无法证明报文的完整性,报文可能遭到篡改
HTTPS 并不是新协议,而是让 HTTP 先和 SSL(Secure Sockets Layer)通信,再由 SSL 和 TCP 通信,也就是说 HTTPS 使用了隧道进行通信。通过使用 SSL,HTTPS 具有了加密(防窃听)、认证(防伪装)和完整性保护(防篡改)。
8、常见协议状态
- 200:请求被正常处理
- 204:请求被受理但没有资源可以返回
- 206:客户端只是请求资源的一部分,服务器只对请求的部分资源执行GET方法,相应报文中通过Content-Range指定范围的资源。
- 301:永久重定向
- 302:临时重定向
- 303:和 302 有着相同的功能,但是 303 明确要求客户端应该采用 GET 方法获取资源。
- 304:如果请求报文首部包含一些条件,例如:If-Match,If-Modified-Since,If-None-Match,If-Range,If-Unmodified-Since,如果不满足条件,则服务器会返回 304 状态码,使用本地缓存。
- 307:临时重定向,与 302 的含义类似,但是 307 要求浏览器不会把重定向请求的 POST 方法改成 GET 方法。
- 400:请求报文中存在语法错误。
- 401:该状态码表示发送的请求需要有认证信息(BASIC 认证、DIGEST 认证)。如果之前已进行过一次请求,则表示用户认证失败。
- 403:请求被拒绝。
- 404:请求资源不存在。
- 500:服务器正在执行请求时发生错误。
- 503:服务器暂时处于超负载或正在进行停机维护,现在无法处理请