前端网络学习笔记(HTTP)

113 阅读4分钟

前端网络学习笔记

网络分层模型和应用协议

分层模型

网络一般分为五层(应用层、传输层、网络层、数据链路层和物理层)

应用层:跟具体应用的相关的消息格式,也就是应用协议(HTTP) 传输层:保证消息的传递(TCP) 网络层:在互联网找到对方(IP) 数据链路层:在一个局域网中找到具体设备(MAC) 物理层:消息具体的传输通道(光纤)

应用协议

URL

uniform resource locator,统一资源定位符。它的作用就是定位互联网中特定资源。 URL是一个固定格式的字符串,如下图所示:

url.png

URL表达的意思是:从互联网中哪个台计算机(通过域名domain来确定)中的哪个程序(通过端口port来确定)寻找哪个服务资源(通过资源路径path来确定),以及使用什么协议(schema)

细节:

  • 当协议为http,端口为80时,端口号可以省略
  • 当协议为https,端口为443时,端口号可以省略
HTTP

超文本传输协议(Hyper Txet Transfer Protocol,HTTP) 广泛应用于互联网的应用协议

该协议规定了两个方面的内容:

  • 传递消息的模式
  • 传递消息的格式
模式

HTTP使用一种极为简单的消息传递模式,【请求-响应】模式

发送请求的称为客户端,接收请求并完成响应的称为服务端

格式

HTTP消息格式是一种纯文本格式,文本分为三个部分:

请求行
请求头
(空一行)
请求体


响应行
响应头

响应体
例子

使用VSCode插件REST Client来给淘宝网发送一个请求

GET / HTTP/1.1    GET和HTTP之间的 / 代表path和query
Host: www.taobao.com    Host代表域名和端口(默认端口可以不写)

image.png

返回响应内容

响应行和响应头 image.png

响应体

image.png

请求方法

请求行中的GET就是请求方法

GET / HTTP/1.1

在HTTP协议中,请求方法仅有语义上的区别,就是告诉服务器此次请求是干什么的。

常见的请求方法:

  • GET:获取资源
  • POST:提交
  • PUT:修改
  • DELETE:删除 常用的请求方法为GET和POST(获取数据使用GET 提交数据使用POST)

请求头 Host

Host: www.taobao.com

Host代表着URL中的域名和端口(这里默认端口 可以不写)

请求头 Content-Type

当请求方法为POST时,需要通过请求头中的Content-Type设置请求体的数据格式

Content-Type: application/json

Content-Type表明了请求体的数据格式


{
    "Id":"admin",
    "Pwd":"123"
}

这里还可以设置其他的数据格式

Content-Type: appliction/x-www-form-urlencoded

Id=admin&Pwd=123
Content-Type: multipart/form-data;boundary=f

--f
Content-Disposition: form-data;name="Id"

admin
--f
Content-Disposition: form-data;name="Pwd"

123
--f--

响应码

响应码是响应行中的数字,后面往往有一个代表服务器响应的态度 image.png

常见的状态码:

  • 200 OK:一切正常
  • 301 Moved Permanently:资源已被永久重定向了 资源永久的更换了地址。
  • 302 Found:资源已被临时重定向 资源暂时被更换了地址(过段时间还可以根据现在的url访问)
  • 304 Not Modified:文档内容未被修改 请求的资源和之前一样,这里的响应不给资源,请使用以前缓存的资源。
  • 400 BadRequest:语义有误,当前请求无法被服务器理解 服务器不能解析请求的url
  • 403 Forbidden:服务器拒绝执行 请求收到,但是服务器不给响应资源
  • 404 Not Found:资源不存在 请求收到了 url中的path在服务器中不存在
  • 500 Internal Server Error:服务器内部错误
3开头的状态码与资源有关,4和5开头的状态码与服务器有关

响应头-Content-Type

常见的有:

  1. text/plain: 普通的纯文本
  2. text/html:html文档
  3. text/javascriptapplication/javascript:js代码
  4. text/css:css代码
  5. image/jpeg:jpg图片
  6. attachment:附件
  7. 其他MIME类型