网络原理 - HTTP/HTTPS(2)

简介: 网络原理 - HTTP/HTTPS(2)

HTTP请求

认识URL

URL基本格式

平时我们俗称的"网址"其实就是说的URL(Uniform Resource Locator统一资源定位符). (还有一个唯一资源标识符,称为uri,严格来说,uri范围比url广).

互联网上的每一个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它.

URL的详细规则由因特网标准RFC1738进行了约定.

http :协议方案名.常见的有http和https, 也有其他的类型.(例如访问mysql时用的jdbc:mysql)

user:pass :登录信息,由于安全问题,现在的网站进行身份认证一般不再通过URL进行了,一般都会省略.

www.example.jp :服务器地址.此处是一个"域名"(这里的域名也可以是IP地址,可以通过DNS系统解析成一个具体的IP地址).

80 : 端口号.这里是设定的为80.如果url中不带端口号,浏览器就会自动给默认端口,用什么端口,取决于协议.(http -> 80, https -> 443).

/dir/index.htm :带层次的文件路径.(可能是个真实的硬盘文件,也可以对应一个虚拟的文件)

网络上资源位置:(1)通过ip地址知道服务器在哪.(2)通过端口号知道程序是哪一个.

(3)通过路径访问资源.

uid=1 :查询字符串.本质是一个键值对结构.键值之间用&分隔.键和值之间用=分隔.(这是针对请求内容做的补充说明,是客户端给服务器传递的重要途径,内容由程序猿自定义).

ch1 :片段标识.片段标识主要用于页面内跳转.(例如Vue官方文档: Vue.js - 渐进式 JavaScript 框架 | Vue.js (vuejs.org), 旁边有一个类似于目录的东西,通过点击跳转,上面url的片段标识也会变化,这就是利用了片段标识).

结合上述的内容,就可以描述出一个网络资源了.

举个例子:描述一个蟹黄堡资源

http://蟹堡王:比奇堡32号/蟹堡王/巨无霸双层蟹堡?洋葱=不要&&美乃滋=大量&&酸黄瓜=2片

使用ping命令查看域名对应的IP地址.

在cmd中输入 ping mp.csdn.net,即可看到域名解析结果.

关于query string.

query string 中的内容是键值对结构.其中key和value的取值和个数,完全都是由程序员自己约定的.我们可以通过这样的方式来定制传输我们需要的信息给服务器.

URL中可以省略的部分

协议名:可以省略,省略后默认为http://

ip地址/域名:在HTML中可以省略.省略后表示的服务器ip/域名与当前HTML所属的ip/域名一致

端口号:可以省略.省略后如果是http协议,端口号自动设为80,如果是https协议,自动设为443.

带层次的文件路径:可以省略.省略后相当于/.有些服务器会在发现/路径时自动访问/index.html

查询字符串:可以省略

片段标识:可以省略.

关于URL encode

像/?:这样的字符,已经被url当作特殊意义来理解了.因此这些字符不能随意出现.

比如,某个参数中需要带这些特殊字符,就必须先对特殊字符进行转义.

一个中文字符由UTF-8或者GBK这样的编码方式构成,虽然URL中没有特殊含义,但是仍然需要进行转义.否则浏览器可能把UTF-8/GBK编码中的某个字节当作URL中的特殊符号.

转义的规则如下:将需要转码的字符转为16进制,然后从右到左,取4位(不足4位直接处理),每两位做一位,前面加上%,编码成%xy形式.

"+"被转义成了"%2B".

urldecode就是urlencode 的逆过程.

认识"方法"(method)

但是事实上,这些方法的语义,都是"标准文档作者"的一厢情愿

开发者在实际开发程序的时候,才不管这一套!(它们干啥我说了算)

完全可以用POST来从服务器拿数据,也完全可以用GET往服务器放数据.

GET方法(读操作)

GET是最常用的HTTP方法,常用于获取服务器上的某个资源.

在浏览器中直接输入URL,此时浏览器就会发送一个GET请求.

另外,HTML中的link,img,script等标签,也会触发GET请求.

使用Fiddler进行抓包观察请求结果

随便抓一个:

GET请求的特点

首行的第一部分为GET.

URL的query string可以为空,也可以不为空.

header部分有若干个键值对结构.

body部分为空.

关于GET请求的URL长度问题

网上有些资料描述:get请求长度最多1024kb,这样的说法是错误的.

他说的是以前.实际上HTTP标准文档上明确说了,对于GET URL的长度不做限制.之前老版本的IE浏览器在实现的时候,URL的长度有限制(历史了). 目前较长的URL也是很常见的.

POST方法(写操作)

POST也是一种常见的方法.多用于提交用户输入的数据给服务器(例如登录页面).

POST请求的特点

首行的第一部分为POST;

URL的 query string 一般为空(也可以不为空);

header部分有若干个键值对结构.

body部分一般不为空.body内的数据格式通过header中的Content-Type指定.body的长度由header中的Content-Length指定.

经典面试题:谈谈GET和POST的区别.

先盖棺定论:GET和POST本质上没有区别.

使用GET的场景,也可以替换成POST.使用POST的场景,也能替换成GET.

这个取决于代码是咋写的.尤其是服务器和客户端都是你自己实现的情况下.

部分服务器/部分浏览器某些状况下GET和POST不能完美替换

但是大部分情况下相互替换问题不大.

但是GET和POST在使用习惯上还是有区别的.

1.GET习惯于将数据放到url的query string中.POST习惯于把数据放到body中.

其实GET也可以把数据放到body(有的服务器/浏览器可能不支持)

POST也可以把数据放到query string中(对于绝大部分的服务器和浏览器都支持).

2.语义上的区别:标准文档中,GET的语义是用来获取数据,POST的语义是给服务器传输数据.

实际使用并不一定非得拘泥于上述要求.

3.关于幂等性.标准文档中,建议GET请求实现成幂等的.POST则无要求.

幂等源于数学属于,计算机种也很常用.

每次输入的结果一定,输出的结果也一定,称为幂等.

每次输入的内容一定,输出的结果不一定,不是幂等.

计算机中的幂等也是挺关键的一件事情,如果某个操作本身是幂等的,此时就可以进行缓存了.

因而GET可以缓存,POST不可以.

4.GET请i去可以被浏览器收藏夹收藏,POST请求不可以.

补充说明:

关于安全性:有些资料说:"POST和GET更安全",这样的说法是不科学的,是否安全主要取决于前端是否在传输密码等敏感信息时是否进行加密,和GET/POST无关.

关于传输数据类型:有的资料说"GET只能传输文本数据,POST可以传输二进制数据".这个是不科学的.GET的query string虽然无法直接传输二进制数据,但是可以针对二进制数据进行url encode.

相关文章
|
24天前
|
安全 网络安全 定位技术
网络通讯技术:HTTP POST协议用于发送本地压缩数据到服务器的方案。
总的来说,无论你是一名网络开发者,还是普通的IT工作人员,理解并掌握POST方法的运用是非常有价值的。它就像一艘快速,稳定,安全的大船,始终为我们在网络海洋中的冒险提供了可靠的支持。
63 22
|
23天前
|
网络安全
网络问题解析:如何解决CondaHTTPError HTTP 000 CONNECTION FAILED错误。
以上就是斯诺普为你准备的解决Conda出现HTTP连接错误的手术室。希望这辆小车可以顺利驶出棘手的泥潭,再次在自由的大路上疾驰。一切的尝试和努力,只为更好的探索与开发。
79 17
|
1天前
|
安全 网络安全 数据安全/隐私保护
HTTP 与 HTTPS 协议及 SSL 证书解析-http和https到底有什么区别?-优雅草卓伊凡
HTTP 与 HTTPS 协议及 SSL 证书解析-http和https到底有什么区别?-优雅草卓伊凡
21 3
|
1月前
|
机器学习/深度学习 数据可视化 PyTorch
深入解析图神经网络注意力机制:数学原理与可视化实现
本文深入解析了图神经网络(GNNs)中自注意力机制的内部运作原理,通过可视化和数学推导揭示其工作机制。文章采用“位置-转移图”概念框架,并使用NumPy实现代码示例,逐步拆解自注意力层的计算过程。文中详细展示了从节点特征矩阵、邻接矩阵到生成注意力权重的具体步骤,并通过四个类(GAL1至GAL4)模拟了整个计算流程。最终,结合实际PyTorch Geometric库中的代码,对比分析了核心逻辑,为理解GNN自注意力机制提供了清晰的学习路径。
254 7
深入解析图神经网络注意力机制:数学原理与可视化实现
|
2月前
|
网络协议 安全 网络安全
Introduction to the HTTP and HTTPS Protocol
HTTP protocol is the foundation of the Internet, and HTTPS is the secure version of HTTP. HTTP is an application layer protocol based on TCP/IP protocol. It does not involve packet (packet) transmission, mainly specifying the communication format between the client and the server, and the default po
95 25
|
2月前
|
缓存 安全 网络安全
代理协议解析:如何根据需求选择HTTP、HTTPS或SOCKS5?
本文详细介绍了HTTP、HTTPS和SOCKS5三种代理协议的特点、优缺点以及适用场景。通过对比和分析,可以根据具体需求选择最合适的代理协议。希望本文能帮助您更好地理解和应用代理协议,提高网络应用的安全性和性能。
124 17
|
2月前
|
网络协议 安全 网络安全
应用程序中的网络协议:原理、应用与挑战
网络协议是应用程序实现流畅运行和安全通信的基石。了解不同协议的特点和应用场景,以及它们面临的挑战和应对策略,对于开发者和用户都具有重要意义。在未来,随着技术的不断发展,网络协议也将不断优化和创新,为数字世界的发展提供更强大的支持。
|
3月前
|
安全 搜索推荐 网络安全
HTTPS与HTTP:区别及安全性对比
HTTP和HTTPS是现代网络通信中的两种重要协议。HTTP为明文传输,简单但不安全;HTTPS基于HTTP并通过SSL/TLS加密,确保数据安全性和完整性,防止劫持和篡改。HTTPS还提供身份验证,保护用户隐私并防止中间人攻击。尽管HTTPS有额外的性能开销和配置成本,但在涉及敏感信息的场景中,如在线支付和用户登录,其安全性优势至关重要。搜索引擎也更青睐HTTPS网站,有助于提升SEO排名。综上,HTTPS已成为大多数网站的必然选择,以保障用户数据安全和合规性。
237 1
|
4月前
|
SQL 安全 网络安全
网络安全与信息安全:知识分享####
【10月更文挑战第21天】 随着数字化时代的快速发展,网络安全和信息安全已成为个人和企业不可忽视的关键问题。本文将探讨网络安全漏洞、加密技术以及安全意识的重要性,并提供一些实用的建议,帮助读者提高自身的网络安全防护能力。 ####
118 17
|
4月前
|
SQL 安全 网络安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
随着互联网的普及,网络安全问题日益突出。本文将从网络安全漏洞、加密技术和安全意识三个方面进行探讨,旨在提高读者对网络安全的认识和防范能力。通过分析常见的网络安全漏洞,介绍加密技术的基本原理和应用,以及强调安全意识的重要性,帮助读者更好地保护自己的网络信息安全。
88 10
下一篇
oss创建bucket