HTTP协议

介绍

  • HTTP(Hyper Text Transfer Protocol): 全称超文本传输协议,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。
  • HTTP 是一种应用层协议,是基于 TCP/IP 通信协议来传递数据的,其中 HTTP1.0、HTTP1.1、HTTP2.0 均为 TCP 实现,HTTP3.0 基于 UDP 实现。现主流使用 HTTP1.0 和 HTTP3.0
  • 协议: 为了使数据在网络上从源头到达目的,网络通信的参与方必须遵循相同的
    规则,这套规则称为协议,它最终体现为在网络上传输的数据包的格式。

工作过程

  • 客户端: 主动发起网络请求的一端
  • 服务器: 被动接收网络请求的一端
  • 请求: 客户端给服务器发送的数据
  • 响应: 服务器给客户端返回的数据

HTTP 协议的重要特点: 一发一收,一问一答

HTTP 请求(Request)

URL

  • 平时我们俗称的”网址“,其实就是 URL(Uniform Resource Locator),翻译为统一资源定位符
  • 互连网上的每个文件都有一个唯一的 URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它
    URL 的标准格式
协议类型:[//服务器地址[:端口号]][/资源层级 UNIX 文件路径]文件名[?查询字符串][#片段标识符]

URL 的完整格式

协议类型:[//[访问资源需要的凭证信息@]服务器地址[:端口号]][/资源层级 UNIX 文件路径]文件名[?查询字符串][#片段标识符]

方法(method)

方法 说明 适用版本号
GET 获取资源 HTTP 1.0、HTTP 1.1
POST 传输实体主体 HTTP 1.0、HTTP 1.1
PUT 传输文件 HTTP 1.0、HTTP 1.1
HEAD 获得报文首部 HTTP 1.0、HTTP 1.1
DELETE 删除文件 HTTP 1.0、HTTP 1.1
OPTIONS 访问支持的方法 HTTP 1.1
TRACE 追踪路径 HTTP 1.1
CONNECT 要求用隧道协议连接代理 HTTP 1.1
LINK 建立和资源之间的联系 HTTP 1.1
UNLINE 断开连接关系 HTTP 1.1

GET 和 POST 的区别

  • GET 和 POST 其实没有本质区别,使用 GET 的场景完全可以使用 POST 代替,使用 POST 的场景一样可以使用 GET 代替。但是在具体的使用上,还是存在一些细节的区别
  • GET 习惯上会把客户端的数据通过 query string 来传输(body 部分是空的);POST 习惯上会把客户端的数据通过 body 来传输(query string 部分是空的)
  • GET 习惯上用于从服务器获取数据;POST 习惯上是客户端给服务器提交数据
    一般情况,程序员会把 GET 请求的处理,实现成“幂等”的;对于 POST 请求的处理,不要求实现成“幂等”
  • GET 请求可以被缓存,可以被浏览器保存到收藏夹中;POST 请求不能被缓存

注意:一个 HTTP 方法是幂等的,指的是同样的请求被执行一次与连续执行多次的效果是一样的,服务器的状态也是一样的。换句话说,幂等的方法不应该具有副作用。

请求头

  • HOST的值表示服务器主机的地址和端口(地址可以是域名,也可以是 IP;端口号可以省略或者手动指定)
  • Content-Length表示 body 的数据长度,长度单位是字节
  • Content-Type表示 body 的数据格式,以下介绍三种请求中的数据格式

HTTP 响应(Response)

状态码(status code)

200 OK
表示访问成功
404 Not Found
表示没有找到资源
403 Forbidden
表示访问被拒绝
405 Method Not Allowed
表示访问的服务器不能支持请求中的方法或者不能使用该请求中的方法
500 Internal Server Error
表示服务器出现内部错误
504 Gateway Timeout
表示当前服务器负载比较大,服务器处理单条请求的时耗很长,就会出现超时情况
302 Move temporarily
表示临时重定向
301 Moved Permanently
表示永久重定向,当浏览器收到这种响应时,后续的请求都会被自动改成新的地址

响应头

Content-Type

Content-Type 表示 body 的数据格式,以下介绍四种响应中的数据格式:

  • text/html
    表示数据格式是 HTML
  • text/css
    表示数据格式是 CSS
  • application/javascript
    表示数据各式是 JavaScript
  • application/json
    表示数据格式是 JSON

通过form表单构造HTTP请求

form 的重要参数:

action:用来构造 HTTP 请求的 URL 是什么
method:用来构造 HTTP 请求的方法(form 只支持 GET 或 POST 方法)

input 的重要参数在 form 标签中的含义

type:表示输入框的类型(text 表示文本、password 表示密码、submit 表示提交按钮)
name:表示构造出的 HTTP 请求的 query string 的 key
value:表示 input 标签的值(对于 type 为 submit 类型来说,value 就对应了按钮上显示的文本)
input 标签的内容:表示 query string 的 value
当我们用 form 表单构造好了 HTTP 请求,点击 submit 提交按钮,就可以将请求发送出去

<form action="http://aaaaa/myPath" method="get">
    <input type="text" name="username">
    <input type="text" name="password">
    <input type="submit" name="提交">
</form>
    <input type="text" name="username">
    <input type="text" name="password">
    <input type="submit" name="提交">
</form>
posted @ 2025-03-19 22:24  LuoboWang  阅读(11)  评论(0)    收藏  举报