当前位置: 首页 > web >正文

url和http

URI :Uniform Resource Identifier,统一资源标识符;

URL:Uniform Resource Locator,统一资源定位符;

URN:Uniform Resource Name,统一资源名称。

URI 属于父类,而 URL和URN 属于 URI 的子类

url结构

https://www.example.com:8080/path/to/resource?search=test#section1

  • 协议https
  • 域名(IP)www.example.com
  • 端口8080
  • 路径/path/to/resource
  • 查询字符串search=test
  • 片段标识符#section1

域名可通过DNS来转换成IP,明确协议后端口可以省略,一般都是固定端口,片段标识符是用来实现网页内跳转的

我们在浏览器中输入url并处理成http报文,这时ip和端口就明确了,在向下的传输层和网络层交付过程中,会在ip报头和tcp报头中添加ip和port字段,所以http报头中请求行的url的协议和域名经常去掉,最后只留路径和查询字符串

浏览器中输入一个url的时候,填充字符可能会破坏url的结构,所以要对其进行编码,将其ascill码转换成十六进制%XX的形式。在查询字符串中,由于历史原因我们一般将空格编码为+,而在路径中并不这样编码

?:用于分隔路径和查询参数等。

=用于表示查询参数中的键值对。

&符号用于分隔查询多个键值对。

MIME(Multipurpose Internet Mail Extensions)

用于表明文件类型

MIME 类型由两部分组成:

  • 主类型(Type):如 textimageaudiovideo 等。
  • 子类型(Subtype):具体的文件类型或格式,如 plainhtmljpegmp3 等。

text/html 就是html的文本文件

浏览器访问的过程

  1. 用户输入 URL: 当你在浏览器地址栏输入一个 URL 时,比如 http://example.com/hello world/,浏览器会检测到这个 URL 是否包含任何需要编码的字符。

    • 空格( 特殊字符(如 #&? 等)可能需要编码成 %20 或其他编码形式,以确保它们不会干扰 URL 的语法结构。
  2. URL 编码: 浏览器会对输入的 URL 进行自动编码。比如:

    • http://example.com/hello world/ 会被编码成 http://example.com/hello%20world/

    这个编码过程是在浏览器的前端(即客户端)完成的。

  3. 构造完整的 HTTP 请求: 浏览器随后将编码后的 URL 作为http报头请求行的一部分。

  4. 发送 HTTP 请求: 浏览器将该编码后的 URL 与其他必要的请求头(如 User-AgentAccept 等)一起构成完整的 HTTP 请求,并发送给服务器。

    • 请求头是不需要什么编码的,也跟url扯不上什么关系

  • GET 请求:数据在 URL 查询字符串 中(例如 ?key=value)。
  • POST 请求:数据在 请求正文 中,通常更适合传输较多或敏感的数据。

    

http://www.xdnf.cn/news/793.html

相关文章:

  • 海外服务器安装Ubuntu 22.04图形界面并配置VNC远程访问指南
  • AI 速读 SpecReason:让思考又快又准!
  • opencv 图像矫正的原理
  • 小刚说C语言刷题——1039 求三个数的最大数
  • PyTorch与TensorFlow模型全方位解析:保存、加载与结构可视化
  • 明心见性与真如三昧
  • CTF web入门之SQL注入使用工具sqlmap
  • 网页下载的m3u8格式文件使用FFmpeg转为MP4
  • C#常用LINQ
  • 快速搭建 Cpolar 内网穿透(Mac 系统)
  • 嵌入式开发板调试方式完全指南:串口/SSH/Telnet及其他方式对比
  • 深度学习框架PyTorch——从入门到精通(3.3)YouTube系列——自动求导基础
  • 【每天一个知识点】主题建模(Topic Modeling)
  • 浙江大学DeepSeek 公开课 第三季 第1期讲座 - 马东方教授 (附PPT下载) by突破信息差
  • 【25软考网工笔记】第三章 局域网(1)CSMA/CD、二进制指数退避算法、最小帧长计算
  • 高品质性价比之王-特伦斯便携钢琴V10
  • 海外版高端Apple科技汽车共享投资理财系统
  • Spark-SQL编程
  • 【第十六届 蓝桥杯 省 C/Python A/Java C 登山】题解
  • 《Java工程师面试核心突破》专栏简介
  • Uniapp 自定义TabBar + 动态菜单实现教程(Vuex状态管理详解)
  • Docker如何更换镜像源提高拉取速度
  • 【Easylive】为什么需要手动转换 feign.Response 到 HttpServletResponse
  • Itext进行PDF的编辑开发
  • GPU高效利用率实战揭秘:蓝耘元生代VS传统云平台的降维打击
  • Spark,hadoop的组成
  • 大数据学习(109)-Impala 和 Hive 之间的 SQL 差异
  • FPGA 中 XSA、BIT 和 DCP 文件的区别
  • 【现代深度学习技术】循环神经网络05:循环神经网络的从零开始实现
  • 基于Arduino的ESP8266连接OneNET云平台(MQTT协议 物模型)(二)连接云平台