[关闭]
@zhongjianxin 2018-07-24T09:58:06.000000Z 字数 4422 阅读 1133

Http Lecture

Trainning


1.URI 是什么 组成元素

URL(Uniform Resource Locator) 地址用于描述一个网络上的资源, 基本格式如下:

  1. schema://host[:port#]/path/.../[?query-string][#anchor]
  2. scheme 指定低层使用的协议(例如:http, https, ftp
  3. host HTTP服务器的IP地址或者域名
  4. port# HTTP服务器的默认端口是80,这种情况下端口号可以省略。如果使用了别的端口,必须指明,例如 http://www.cnblogs.com:8080/
  5. path 访问资源的路径
  6. query-string 发送给http服务器的数据
  7. anchor-
  1. http://www.mywebsite.com/sj/test/test.aspx?name=sviergn&x=true#stuff
  2. Schema: http
  3. host: www.mywebsite.com
  4. path: /sj/test/test.aspx
  5. Query String: name=sviergn&x=true
  6. Anchor: stuff

2.B/S 架构

image.png-202.7kB

HTTP请求过程

1.建立TCP连接
2.web浏览器向服务器发送请求命令
3.web浏览器发送请求头信息
4.web浏览器发送请求体
5.web服务器应答
6.web服务器发送应答头信息
7.web服务器向浏览器发送数据
8.web服务器关闭TCP连接

打开一个网页需要浏览器发送很多次Request

  1. 当你在浏览器输入URL http://www.cnblogs.com 的时候,浏览器发送一个Request去获取 http://www.cnblogs.com 的html. 服务器把Response发送回给浏览器.

  2. 浏览器分析Response中的 HTML,发现其中引用了很多其他文件,比如图片,CSS文件,JS文件。

  3. 浏览器会自动再次发送Request去获取图片,CSS文件,或者JS文件。

  4. 等所有的文件都下载成功后。 网页就被显示出来了。

3.请求头 请求行 请求体

image.png-37kB

请求头: Get Post Delete

Get和Post方法的区别

Http协议定义了很多与服务器交互的方法,最基本的有4种,分别是GET,POST,PUT,DELETE. 一个URL地址用于描述一个网络上的资源,而HTTP中的GET, POST, PUT, DELETE就对应着对这个资源的查,改,增,删4个操作。

GeneralRequest Method

我们看看GET和POST的区别

  1. GET提交的数据会放在URL之后,以?分割URL和传输数据,参数之间以&相连,如EditPosts.aspx?name=test1&id=123456. POST方法是把提交的数据放在HTTP包的Body中.

  2. GET提交的数据大小有限制(因为浏览器对URL的长度有限制),而POST方法提交的数据没有限制.

  3. GET方式需要使用Request.QueryString来取得变量的值,而POST方式通过Request.Form来获取变量的值。

  4. GET方式提交数据,会带来安全问题,比如一个登录页面,通过GET方式提交数据时,用户名和密码将出现在URL上,如果页面可以被缓存或者其他人可以访问这台机器,就可以从历史记录获得该用户的账号和密码.

4.Request/Response: HTTP请求由三部分组成,分别是:请求行,消息报头,请求正文。

image.png-40.2kB
image.png-47.4kB
- request:请求行、请求头部、空行和请求数据四个部分组成
1.请求的方法或动作,比如是GET还是POST请求
2.正在请求的URL
3.请求头,包含一些客户端环境信息,身份验证信息
4.请求体即请求的正文,包含客户提交的字符串信息,表单信息等
- responses:状态行、消息报头、空行和响应正文
1.一个数字或文字组成的状态码
2.响应头,包含服务器的环境信息例如服务器类型,日期时间,内容类型和长度等
3.响应体

5.Http Status(可以举一些实际例子)

HTTP状态码由三位数字构成,其中首位数字定义了状态码的类型

HTTP状态码

1** 信息,服务器收到请求,需要请求者继续执行操作
2** 成功,操作被成功接收并处理
3** 重定向,需要进一步的操作以完成请求
4** 客户端错误,请求包含语法错误或无法完成请求
5** 服务器错误,服务器在处理请求的过程中发生了错误

Example

◆ 200 (OK): 找到了该资源,并且一切正常。
◆ 304 (NOT MODIFIED): 该资源在上次请求之后没有任何修改。这通常用于浏览器的缓存机制。
◆ 401 (UNAUTHORIZED): 客户端无权访问该资源。这通常会使得浏览器要求用户输入用户名和密码,以登录到服务器。
◆ 403 (FORBIDDEN): 客户端未能获得授权。这通常是在401之后输入了不正确的用户名或密码。
◆ 404 (NOT FOUND): 在指定的位置不存在所申请的资源。

HTTP协议的主要特点可概括如下:

  1、支持客户/服务器模式。
  2、 简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GETHEADPOST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
  3、灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
  4、无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
  5、无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。
  另一方面,在服务器不需要先前信息时它的应答就较快。
  

HTTP Status Code

常见的状态码:

  1. HTTP: Status 200 服务器成功返回网页
  2. HTTP: Status 404 请求的网页不存在
  3. HTTP: Status 503 服务不可用

详解:

说明:

HTTP: Status 1xx (临时响应)
->表示临时响应并需要请求者继续执行操作的状态代码。

  1. HTTP: Status 100 (继续)
  2. -> 请求者应当继续提出请求。 服务器返回此代码表示已收到请求的第一部分,正在等待其余部分。
  3. HTTP: Status 101 (切换协议)
  4. -> 请求者已要求服务器切换协议,服务器已确认并准备切换。

HTTP Status 2xx (成功)
->表示成功处理了请求的状态代码;

  1. HTTP Status 200 (成功)
  2. -> 服务器已成功处理了请求。 通常,这表示服务器提供了请求的网页。
  3. HTTP Status 201 (已创建)
  4. -> 请求成功并且服务器创建了新的资源。
  5. HTTP Status 202 (已接受)
  6. -> 服务器已接受请求,但尚未处理。
  7. HTTP Status 203 (非授权信息)
  8. -> 服务器已成功处理了请求,但返回的信息可能来自另一来源。
  9. HTTP Status 204 (无内容)
  10. -> 服务器成功处理了请求,但没有返回任何内容,当前文档不变,可以局部跟新。
  11. HTTP Status 205 (重置内容)
  12. -> 服务器成功处理了请求,但没有返回任何内容,当前文档整体刷新。
  13. HTTP Status 206 (部分内容)
  14. -> 服务器成功处理了部分 GET 请求。

HTTP Status 4xx (请求错误)
->这些状态代码表示请求可能出错,妨碍了服务器的处理。

  1. HTTP Status 400 (错误请求)
  2. ->服务器不理解请求的语法。
  3. HTTP Status 401 (未授权)
  4. ->请求要求身份验证。 对于需要登录的网页,服务器可能返回此响应。
  5. HTTP Status 403 (禁止)
  6. -> 服务器拒绝请求。
  7. HTTP Status 404 (未找到)
  8. ->服务器找不到请求的网页。
  9. HTTP Status 405 (方法禁用)
  10. ->禁用请求中指定的方法。
  11. HTTP Status 406 (不接受)
  12. ->无法使用请求的内容特性响应请求的网页。
  13. HTTP Status 407 (需要代理授权)
  14. ->此状态代码与 401(未授权)类似,但指定请求者应当授权使用代理。
  15. HTTP Status 408 (请求超时)
  16. ->服务器等候请求时发生超时。
  17. HTTP Status 409 (冲突)
  18. ->服务器在完成请求时发生冲突。 服务器必须在响应中包含有关冲突的信息。
  19. HTTP Status 410 (已删除)
  20. -> 如果请求的资源已永久删除,服务器就会返回此响应。
  21. HTTP Status 411 (需要有效长度)
  22. ->服务器不接受不含有效内容长度标头字段的请求。
  23. HTTP Status 412 (未满足前提条件)
  24. ->服务器未满足请求者在请求中设置的其中一个前提条件。
  25. HTTP Status 413 (请求实体过大)
  26. ->服务器无法处理请求,因为请求实体过大,超出服务器的处理能力。
  27. HTTP Status 414 (请求的 URI 过长) 请求的 URI(通常为网址)过长,服务器无法处理。
  28. HTTP Status 415 (不支持的媒体类型)
  29. ->请求的格式不受请求页面的支持。
  30. HTTP Status 416 (请求范围不符合要求)
  31. ->如果页面无法提供请求的范围,则服务器会返回此状态代码。
  32. HTTP Status 417 (未满足期望值)
  33. ->服务器未满足”期望”请求标头字段的要求。

HTTP Status 5xx (服务器错误)
->这些状态代码表示服务器在尝试处理请求时发生内部错误。 这些错误可能是服务器本身的错误,而不是请求出错。

  1. HTTP Status 500 (服务器内部错误)
  2. ->服务器遇到错误,无法完成请求。
  3. HTTP Status 501 (尚未实施)
  4. ->服务器不具备完成请求的功能。 例如,服务器无法识别请求方法时可能会返回此代码。
  5. HTTP Status 502 (错误网关)
  6. ->服务器作为网关或代理,从上游服务器收到无效响应。
  7. HTTP Status 503 (服务不可用)
  8. -> 服务器目前无法使用(由于超载或停机维护)。 通常,这只是暂时状态。
  9. HTTP Status 504 (网关超时)
  10. ->服务器作为网关或代理,但是没有及时从上游服务器收到请求。
  11. HTTP Status 505 HTTP 版本不受支持)
  12. -> 服务器不支持请求中所用的 HTTP 协议版本。
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注