【JavaEE初阶】HTTP协议|HTTP请求|URL基本格式|URLencode

💡推荐

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。【点击跳转到网站】


HTTP请求(Request)

认识URL

URL基本格式

平时我们俗称的"⽹址"其实就是说的URL(Uniform Resource Locator统⼀资源定位符)

互联⽹上的每个⽂件都有⼀个唯⼀的URL,它包含的信息指出⽂件的位置以及浏览器应该怎么处理
⼀个具体的URL:(可以看到,在这个URL中有些信息被省略了)

1 https://v.bitedu.vip/personInf/student?userId=10000&classId=100

(1)协议名称:https :

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

(2)身份认证信息:user:pass 

登陆信息,现在已经废弃了

(3)IP地址/域名:v.bitedu.vip

服务器地址.此处是⼀个"域名",域名会通过DNS系统解析成⼀个具体的IP地址.(通过ping命令可以看到, v.bitedu.vip 的真实IP地址为 118.24.113.28 )

(4)端口号:(可省略)

上⾯的URL中端⼝号被省略了.当端⼝号省略的时候,浏览器会根据协议类型⾃动决定使⽤哪个端⼝.例如http协议默认使⽤80端⼝,https协议默认使⽤443端⼝,

(5)路径:(path)/personInf/student :带层次的⽂件路径.

描述了这个机器的这个程序,上面管理的哪个程序

(6)查询字符串:(query string):userId=10000&classId=100

本质是⼀个键值对结构,键值对之间使⽤&分隔,键和值之间使⽤=分隔.

此处键有啥,值有啥都是根据程序员自己定义

(7)片段标识符 :#

表示一个网页中的某个部分

此URL中省略了⽚段标识.⽚段标识主要⽤于⻚⾯内跳转.(例Vue官⽅文档:https://cn.vuejs.org/v2/guide/#%E8%B5%B7%E6%AD%A5,通过不同的⽚段标识跳转到⽂档的不同章节)

扩展:使⽤ping命令查看域名对应的IP地址.

1. 在开始菜单中输⼊ cmd ,打开 命令提⽰符 

2. 在cmd中输⼊ ping v.bitedu.vip ,即可看到域名解析的结果.

PS:有的电脑上ping命令会报错 ping 不是内部或外部命令,也不是可运⾏的程序或批处理⽂件 。这种情况是因为有的Windows10默认没有启⽤ping命令.

百度搜索windows10 启⽤ ping 即可

 URL中的可省略部分

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

• ip地址/域名:在HTML中可以省略(⽐如img,link,script,a标签的src或者href属性).省略后表⽰服务器的ip/域名与当前HTML所属的ip/域名⼀致.

• 端⼝号:可以省略.省略后如果是http协议,端⼝号⾃动设为80;如果是https协议,端⼝号⾃动设为443.

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

• 查询字符串:可以省略

• ⽚段标识:可以省略


关于URLencode

像/ ? : 等这样的字符,已经被url当做特殊意义理解了.因此这些字符不能随意出现.⽐如,query string里value部分,一旦也包含这些符号,就会使url的解析出现问题,那么构造http请求就必须先对特殊字符进⾏转义urlencode.

⼀个中⽂字符由UTF-8/GBK这样的编码⽅式构成,虽然在URL中没有特殊含义,但是仍然需要进⾏转义.否则浏览器可能把UTF-8/GBK编码中的某个字节当做URL中的特殊符号.

转义的规则如下:

将需要转码的字符转为16进制,然后从右到左,取4位(不⾜4位直接处理),每2位做⼀位,前⾯加上%,编码成%XY格式

例如:

 "+"被转义成了"%2B"(“+”的acsii就是“2B”)

有些时候,浏览器为了让用户看起来方便,显示的是转码之前的字符,而实际上发送的是转码之后的

例子:

浏览器显示:

但是复制URL下来却是:

urldecode就是urlencode的逆过程

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/16361.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL--备份恢复

目录 一、备份恢复的工作职责 1.备份的时间周期 2.备份的方式 3.恢复方案 4.检查备份 5.定期恢复演练 6.故障恢复策略 7.迁移升级 二、逻辑备份工具--mysqldump 1.介绍 2.使用场景 3.mysqldump命令的参数介绍 1)全备: 2)单库或…

YOLO 学习和使用 (重拾机器学习)

contents a nenrons 单层神经网络 多层神经网络 CNN (Convolutional Neural Network) YOLO 5.1. YOLO(you only look once) 5.2. predict stage: 置信度 * 类别条件概率 全概率非极大值抑制,通过IOU 指数进行实现每个 grid cell 生成两个预测 bounding box 无…

Java 注解和反射

文章目录 1. 注解 - annotation1.1 什么是注解1.2 内置注解1.3 元注解(meta-annotation)1.4 自定义注解 2. 反射2.1 反射机制概述2.2 Class 类2.3 获取 Class 类的实例2.4 所有类型的 Class 对象2.5 类的加载与 ClassLoader 的理解2.6 什么时候会发生类的…

dsPIC单片机buck-boost拓扑双向DC-DC电源变换器设计

为实现电池储能装置的双向DC-DC变换器,本系统以buck-boost拓扑电路为核心,通过DSPICFJ256GP710单片机最小系统控制拓扑的切换,从而进行buck恒流充电和boost恒压放电。充电时效率≥94%,放电时效率≥95.5%,具有过压保护及…

JVM之【类加载机制】

一、类加载过程 1. 加载(Loading) 工作内容: 通过类的全限定名来获取定义此类的二进制字节流: JVM首先会调用类加载器的findClass方法来找到类文件的路径,通常从文件系统、JAR包、网络、数据库等来源获取类文件。 将…

loss = criterion(output, target)

在 PyTorch 中,计算损失时将 output 和 target 作为参数传递给损失函数 (criterion) 的顺序是 criterion(output, target)。这种顺序在大多数情况下是约定俗成的,并且符合大多数损失函数的参数顺序要求。

Installing Tinyproxy on CentOS 7 测试可用

Installing Tinyproxy on CentOS 7 For RHEL/CentOS 7 systems, Tinyproxy is part of EPEL (Extra Packages for Enterprise Linux). Install EPEL on CentOS 7 yum install epel-release -y yum update -y Install Tinyproxy on CentOS 7 yum install tinyproxy -y 编辑…

Android单元测试实践

一、基础概念 按照Google官方建议,Android测试体系应该参照测试金字塔架构(如下图所示),App应该包含三类测试(即小型、中型和大型测试)。 图片 小型测试是指单元测试,用于验证应用的行为,一次验证一个类。中型测试是指集成测试,用于验证模块内堆栈级别之间的交互或相…

yolov8报警图片写入minio服务器 Rabbitmq发送地址

OSError [WinError 1455]页面文件太小,无法完成操作”解决方案“_深度学习_yangshejun-GitCode 开源社区 (csdn.net) python对RabbitMQ的简单使用_python rabbitmq-CSDN博客 【Windows安装RabbitMQ详细教程】_rabbitmq windows-CSDN博客 Windows 10安装Minio 文件…

CentOS Stream 9 vsftpd本地用户设置

1、使用yum指令下载vsftpd yum install vsftpd2、创建wu用户,为ftp组的成员 useradd -g ftp wu3、设置一个密码 echo 1 |passwd --stdin wu4、修改本地用户目录的权限(所有者为wu用户) chown -R wu /data/wu5、创建本地用户的信息数据存放…

stm32学习日记(三)

20240526 一、定时器内部时钟 /*开启时钟*/ RCC_APBxPeriphClockCmd(RCC_APB1Periph_TIMx, ENABLE); /*配置时钟源*/ TIM_InternalClockConfig(TIMx); /*时基单元初始化*/ TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure; //定义结构体变量 /*中断…

Elasticsearch 8.1官网文档梳理 - 十五、Aggregations(聚合)

Aggregations ES 的聚合可以总结为三类:指标聚合、统计聚合、其他分析聚合。 Metric aggregations: 计算 field 的指标值,例如平均值、最大值、和等指标Bucket aggregations: 基于 field 的值、范围、或其他标准对 doc 分类&…

mysql 函数 GROUP_CONCAT 踩坑记录,日志:Row 244 was cut by GROUP_CONCAT()

mysql 函数 GROUP_CONCAT 踩坑记录,报错:Row 244 was cut by GROUP_CONCAT 结论:个人建议还是放在内存中拼接吧~db日志信息:Row 244 was cut by GROUP_CONCAT())根本原因:拼接的字符串长度超过 group_concat_max_len […

07-30-03-重型运输

题目描述 Big Johnson运输汽车制造公司是专门生产大型汽车的厂商。它们最新型号的运输车Godzilla V12,运载量是如此之大,以至于它所能装载的重量从不取决于它本身,而是取决于所经过道路的承载限制。给定起点和终点城市,试计算God…

开源与闭源大模型在AI发展中的对比分析

在当今AI领域,开源和闭源是两种主要的发展路径。开源模型指的是模型的源代码和相关资源对公众开放,可以自由获取和使用;闭源模型则是指模型源代码和相关资源受到保护,不对外公开。针对开源与闭源大模型在数据隐私保护、用户数据安…

uni-app实现页面之间的跳转传参(八)

界面之间的参数传递在 开发中经常会用到,这节主要将一下uni-app开发应用是的传参情况。如下图所示,我的一级界面将点检分成三类:日点检、周点检和年保养;在点击相应的会导航到相应的功能。 在uni-app中常用的方法有uni.navigateTo(OBJECT)、uni.redirectTo(OBJECT);简单的…

实时通信的方式——WebRTC

文章目录 基于WebRTC实现音视频通话P2P通信原理如何发现对方? 不同的音视频编解码能力如何沟通?(媒体协商SDP)如何联系上对方?(网络协商) 常用的API音视频采集getUserMedia核心对象RTCPeerConne…

Golang Web开发- Gin不使用Nginx部署Vue项目

文章目录 前言一、ANTD PRO VUE 构建下载代码安装依赖前端启动修改路由模式【重点】前端构建二、ANTD PRO VUE 权限去除【选做】三、Gin 后端启动代码总结前言 当我们应用后端用Gin框架,前端使用Vue开发,那么在最后部署上线的时候,一般是前端Vue构建的dist目录的文件部署在…

Web开发学习总结

学习路线 Web 全球广域网,也称为万维网(www World Wide Web),能够通过浏览器访问的网站 初识Web前端 Web标准也称为网页标准,由一系列的标准组成,大部分由W3C(World Wide Web Consortium,万维网联盟)负责制定。三个组…

vLLM部署qwen大模型加速推理实现

目录 step1: 编写 vllm_wrapper.py step2: 应用场景:给体检指标生成健康建议 step1: 编写 vllm_wrapper.py from transformers import PreTrainedTokenizer, GenerationConfig, StoppingCriteriaList from typing import Optional, Callable, List, Tuple, Union…