IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> HTTP请求方法 -> 正文阅读

[网络协议]HTTP请求方法

1?引言

HTTP请求方法,码农们使用起来大概早已游刃有余,但是至于理论原理,代码规范未必全然了熟于胸,即所谓指下生风,胸无点墨。今天咱们就好好说道说道这HTTP请求方法到底都有啥,值得一探究竟。

2?背景知识回顾

? ? ??2.1 HTTP请求方法简介

HTTP协议,即超文本传输协议,用于实现客户端与服务器端之间的通信。工作方式是请求-应答模式。web浏览器就是常见的客户端,提供应用的服务器作为服务器端。

客户端与服务器端之间的交互逻辑关系如下图所示:? ?

? ? ? ? ? ? ? ?

? ? ? ? ? ??图1??客户端与服务器端之间的交互逻辑

HTTP请求方法,最常见的GET和POST,当然还有PUT、DELETE、HEADER等。GET和POST有何区别呢,下面我们着重从原理、规范两方面来详解。

?2.2??HTTP请求方法原理

在HTTP是基于TCP/IP协议的关于数据传输的协议,其底层是TCP/IP协议。换言之,GET、POST都是TCP链接,可以说这两种方法可以干同一件事。那区别在哪里呢?且听小编打个比方。在网络世界中,网络信道就好比道路,那么TCP就像满载快递的汽车,面向客户(面向连接),很靠谱,很少出现快递丢失的现象。但是如果道路上跑的都是一模一样的快递汽车,那就会引起混乱,造成交通拥堵。为了避免这种情况,HTTP协议应运而生,它规定了不同服务种类,比如GET、POST等。HTTP规定,如果执行GET请求,那么就好比车牌号为GET(Method方法为GET),数据也要写在车牌号(url例如http://www.xxx.com?input1=xxx1&input2=xxx2)中。如果执行POST请求,那么车牌号写上POST,数据则放在车厢中(requestbody)。

?有了车牌号,TCP可以识别各种服务类型的汽车,具体到运输方式,GET、POST也各有特点。简单来说,GET请求只产生一个TCP数据包,而POST则产生两个。具体地,对于GET请求,浏览器会先把Http Header和data一起发送,服务器返回响应200表示成功签收。而POST请求则先发送Header确认能否收货,服务器响应100表示可以签收,再发送data上门,服务器返回200表示成功签收。在网络环境好的情况下,这两种方式耗时差别不大,但是如果网络环境比较差,那么POST在保证数据完整性方面呈碾压之势。

?2.3??HTTP请求方法规范

在规范方面,GET和POST也是有区别的。前面提到,GET方法的数据是放在URL中的,而POST则放在request body中,这两点是最重要也是最显著的区别,至于其他差异,如下表所示。

功能

GET

POST

后退/刷新

无害

数据会被重新提交

书签

可收藏为书签

不可收藏为书签

缓存

能缓存

不能缓存

编码类型

application/x-www-form-urlencoded

application/x-www-form-urlencoded或multipart/form-data。为二进制数据使用多重编码。

历史

参数保留在浏览器历史中

参数不会保留在浏览器历史中

数据长度

有限制。GET方法在URL添加数据,URL最长为2048个字符。

无限制

数据类型

只允许ASCII字符

无限制

安全性

较差,发送的数据是URL一部分,在发送密码及其他敏感数据时忌用GET。

更安全。因为参数不会被保存在历史或日志中。

可见性

数据在URL中,对所有人可见。

数据不会显示在URL中。

?2.4??HTTP其它请求方法介绍

HTTP协议还有其它一些请求方法,具体如下表所示。

方法

描述

HEAD

与GET相同,但只返回HTTP报头,不返回报文主体

PUT

上传指定的URI标识

DELETE

删除指定资源

OPTIONS

返回服务器支持的HTTP方法

CONNECT

把请求连接转换到透明的TCP/IP通道

3?JavaScript实现POST、GET请求

在实现前端页面时经常会使用JavaScript实现POST、GET请求,同时也会使用JQuery动态实现。接下来将介绍两种请求的实现方法。

?3.1??POST请求

在实现POST请求时,均采用JSON格式将参数封装,形式大同小异,具体如下。

? ? ? 1)方式一

$.POST(url, {username:’xxx’, password:’xxxxxx’})

? ? ? 2)方式二

var body = {

???????? username:’xxx’,

???????? password:’xxxxxx’

}

$.POST(url, body)

?3.2??GET请求

? ? ? 1)方式一

window.location.href=url;

这是JavaScript中最常用的实现页面跳转的方法,其实质是采用GET方式发送请求。

? ? ? ?2)方式二

$.GET(url?input1=xxx&input2=xxx);

这种方式在实际应用中也非常多见。在日常使用浏览器浏览页面时也经常看到这种形式的页面,可以留意下。

4?总结

HTTP的请求方法早已驾轻就熟,应对自如,其实无他,惟手熟尔。然则此间别有洞天,确实值得探究一番。经过上文,相信各位应该能从工作原理、方法规范、实现方式等都有了全面清晰的认识。事实证明,理论知识与实践相结合很有必要,真正做到懂原理,会方法,能实践,而非只坐卖油翁、解牛者。

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-02-24 15:41:42  更:2022-02-24 15:42:59 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 8:28:20-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码