Http知识点梳理

2019-10-24  本文已影响0人  MadnessXiong

Http知识点梳理

1. HTTP主要特点

  1. 简单快速:客户向服务器请求服务时,只需传送请求方法和路径。灵活:http允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记

  2. 无连接:无连接的含义是限制每次连接只处理一个请求,服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。

  3. 无状态:http协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大,另一方面,在服务器不需要先前信息时它的应答就很快。

2. URL

例:https://github.com/MadnessXiong/AndroidNote

  1. 协议部分:https,该URL的协议部分为https:,代表网页使用的是https协议。

  2. 域名部分:该URL的域名部分为github.com。

  3. 虚拟目录部分(path):MadnessXiong/AndroidNote。

  4. 参数部分:从“?”开始到“#”为止之间的部分为参数部分,又称搜索部分、查询部分。参数可以允许有多个参数,参数与参数之间用“&”作为分隔符。参数部分不是必须的。

3. 请求方法

  1. GET:获取资源(一般没有Body),请求的数据会附在URL之后,如果数据是英文字母/数字,原样发送;如果是空格,则转换为+;如果是中文/其他字符,则直接把字符串用Base64加密。所以GET是明文传输,安全性较低。另外特定的浏览器和服务器会对URL长度进行限制,所以GET请求传输数据会有大小限制。

  2. POST:增加或者修改资源,把提交的数据放在Body中,安全性较高。理论上传输数据大小不受限制,但是一般服务器都会进行一定大小限制。

  3. PUT:修改资源

  4. DELETE:删除资源

  5. HEAD:类似get,不过返回的响应中没有具体内容,用于获取报头(如下载时,可以先head获取资源大小等信息)

4. 状态码-状态码由3位数字组成,第一个数字定义了响应的类别

  1. 1xx:指示信息--表示请求已接收,继续处理

    • 100:客户团通过特定的header告诉服务器会进行多次请求,服务器收到本次请求后返回100,表示收到,可以继续传。

    • 101:客户端通过特定header请求服务器,如询问是否支持http2,服务返回101,表示支持。

  1. 2xx:请求成功

    • 200:成功

    • 201:请求成功并且服务器创建了新的资源。

    • 202:服务器已接受请求,但尚未处理。

  1. 3xx:重定向

    • 301:地址变为另外等地址(永久性改变)

    • 302:地址变为另外等地址(临时改变,页面暂时出问题等处理方式)

    • 304:自从上次请求后,请求的网页未修改过。服务器返回此响应时,不会返回网页内容。

  1. 4xx:客户端错误

    • 400:请求错误,服务器不理解的语法,比如参数错误

    • 401:请求要求身份验证,比如未登陆

    • 404:服务器找不到请求的网页

  1. 5xx:服务器错误

5. 请求头-Header

  1. Content-Length:内容的长度(字节)

  2. Content-Type:内容的类型,响应的返回的数据格式

    • text/html:文本,用于浏览器页面响应

    • application/x-www.form-urlencoded:普通表单(比如登陆信息)

    • multipart/form-data:多部分数据,一般用于传输包含二进制内容的多项内容(修改信息+上传用户头像),由于是多项,需要boundary进行分隔各项内容,会多占用一定空间,所以纯文本一般不使用这种方式。

    • application/json:json格式

    • image/jpeg/zip:单文件,图片。没有boundary,适合单文件上传。

  3. location:重定向目标URL

  4. userAgent:用户代理(用来确定客户端信息,比如是什么浏览器,什么手机;苹果还是安卓等信息来进行不同的操作或返回不同类型的数据)

  5. Range/Accept-Range:指定Body的内容范围,可以用于断点续传,分段下载。

  6. Cookie& Session

    • Cookie的定义及工作机制:Cookie是访问某些网站以后在本地存储一些网站相关的信息,下次再访问的时候减少一些步骤 。Cookie是服务器在本地机器上存储的小段文本并随每一个请求发送至同一个服务器,是一种在客户端保持状态的方案。

    • Cookie的应用:购物车,用户偏好,主题设置,分析用户行为等。

    • Session的定义及工作机制:Session是存在服务器的一种用来存放用户数据的类HashTable结构。当浏览器第一次发送请求时,服务器自动生成了一个HashTable和一个Session ID用来唯一标识这个HashTable,并将Session ID通过响应发送回浏览器。当浏览器第二次发送请求时,会将前一次服务端响应中的Session ID放在请求中(Cookie中)一并发送到服务器,服务器从请求中提取出Session ID,并和保存的所有Session ID进行对比,找到这个用户对应的HashTable。

    • Cookie和Session的区别:

      • Cookie数据存在客户端浏览器上,Session数据存在服务器上

      • Cookie因为存在本地,可以通过分析本地的Cookie进行Cookie欺骗,所以安全性较低

      • Session会在一定时间内保存在服务器上。当访问增多,会占用服务器性能,如果主要到减轻服务器性能,不必要的信息可以使用Cookie。一般将登陆等重要信息存放在Session,其他信息如果需要保留,可以存放在Cookie。

  7. Accept:客户端能接收的数据类型。如text/html

  8. Accept-Encoding:客户端接收的字符集。如utf-8

  9. Content-Encoding:压缩类型。如gzip

  10. Cache-Control:

    • no-cache:告诉客户端可以缓存,但是再次请求时需要询问是否已失效。

    • no-store:不缓存

    • max-age:在指定失效日期之前都可以缓存

  11. Etag:数据的hash,用来判断是否更新过

  12. Authorization:2种方式

    • Basic :直接把信息Base64后拼接在后面。

    • Bearer:

      • 直接使用:Authorization:Bear(bearer token-token通过授权方拿到)

      • OAuth2过程

        • 客户端访问授权方拿到Authorization code
        • 客户端把Authorization code交给自己服务器
        • 服务器提交Authorization code和client_secret向授权方申请token。(client_secret是在注册授权方时拿到的,严格保密的)
        • OAuth2过程结束,客户端需要信息时通过访问服务器,服务器携带token访问授权方取得信息,再传给客户端
上一篇 下一篇

猜你喜欢

热点阅读