HTTP学习笔记(1)ULR语法
1,概述
当你打开一个浏览器则会进入一个主页,也许你会想只是打开了浏览器罢了,但是浏览器默默的把这个主页默认的网址发送出去,你只是不知道而已,你只是没有输入而已。我们来做个实验。
1,双击打开
2,可以看到
注意输入网址的框中会显示百度的首页的网址。
实际上看这里
看到常规这一栏里面有我设置的默认主页。
因此当打开一个浏览器时,它会根据设置的默认主页的的网址向服务器发送请求。
那么平常我们说的这个网址到底是什么呢?实际上在计算机科学术语里面叫URL.
ULR(Uniform Resource Locator):统一资源定位符。它的功能就是定位因特网上的资源,并可使用不同的协议去访问。一般来说一个URL本身只代表了某个资源在服务器上的位置,并不能获取资源,当你使用浏览器输入某个ULR时,浏览器会代我们向服务器发送一个请求,请求的正是这个ULR所定位的资源,如果一切正常,服务器则会向我们返回我们需要的结果,正像你输入https://www.baidu.com/ 那么你会看到服务器给你返回一个百度首页面。
我来举个例子说明一下。假如你有一个电话本,里面有许多电话号码,这些电话号码会定位不同的人吧?对了URL其实也可以类比这里的电话号码。因为URL其实定位的是许多资源。
电话号码------URL
1,电话号码可以定位某个人;URL可以定位某个资源。
2,电话号码不拨出去的话根本得不到别人的应答;URL如果没有通过浏览器发送出去自然也得不到任何结果。所以这两者有个重要的特点,就是只标识某个人或者资源,必须通过拨打或者发送请求才可以通知到对方。
3,由第二条我们想到把这些发送号码或者URL发送出去需要一个介质,即就是电话和浏览器。
4,打电话的时候假如这个号码被注销了(以前还在使用),类比到URL现在所定位的那个资源现在不存在(以前存在过),那么电话自然也打不通,使用浏览器访问的资源也访问不到。
5,第四条只是举个简单的例子,但是实际上打电话和访问某个资源过程是大不相同的,总体来讲就是出现某种情况打不通电话,也会有访问不到某个资源,这是一种发送URL不成功的例子。
6,大多数情况电话打通了,你就和那个电话号码定位的人建立了连接,自然如果正常的情况,你使用浏览器发送的URL达到了服务器,也就是那个资源存在的地方,那么你和服务器也建立了连接。
7,当双方建立了连接,自然双发可以打电话,也可以访问服务器上的资源。
2,URL的语法
上面说明了使用URL就可以获取服务器上的资源,那么这个过程是怎么样的呢?这就需要知道URL的语法。
<scheme>://<user>:<password>@<host>:<port>/<path>;<params>?<query>#<frag>

上面的URL的内容比较多,其实一般不会都用到的,你看百度首页呢?https://www.baidu.com/只是一个协议和主机。
说明:
scheme:方案,也许大家很奇怪这个方案是什么,其实就是我们经常看的比如说http协议这样的。它规定了只能使用某些协议。
https://www.baidu.com/ 比如这个https就是一个方案,他是https协议,有一点需要注意的是协议名称不区分大小写。
用户名和密码:某些协议需要使用用户名和密码。比如ftp协议。如下图,假如不输入用户名和密码,会有个提示输入的窗口。

其实也可以按照URL的格式来:这里没有输入端口号,其实ftp协议有自己默认的端口号21,所以可以不输入。

当一切输入完成的时候可以发送请求进入网页,此时我们关注这里:

主机和端口:主机就是可以标识一个服务器的标志,可以是个主机名称(比如说百度首页URL:https://www.baidu.com/的主机就是www.baidu.com),也可以是个IP,其实这个www.baidu.com实际上和某个IP是对应的,在发送这个URL的时候会把www.baidu.com解析成IP。主机和端口定位某个资源的大体位置,端口对本服务器某个服务进行监控,外界也只有通过这个端口才可以和这个服务器进行通信。如下图,一个服务器有两个服务,各有一个端口,每个服务都有一些资源。如何要访问到服务器的服务2中的资源2?首先要访问到该服务器,用IP,何如访问到服务2呢?使用端口2,如何找到资源2呢?其实资源存放的是有路径的,这就需要使用下面的这种格式:<scheme>://<host>:<port>/<path>;比如:http://liulanqi.baidu.com/80/index.html这个URL使用http协议,通过主机liulanqi.baidu.com访问到某个服务器,这里端口没有,http协议的端口默认为80,可以不写上。通过主机和端口可以访问到服务,后面的80/index.html可以找到某个特定的资源。

参数:通过上面的分析,我们已经可以访问到某个资源了,其实事实上还有诸多问题,比如某个协议访问某个资源使用不同的方式,就可能导致出错。比如图片在服务器使用二进制存放,而ftp协议传输资源如果使用文本形式,那就会出错,这个时候要说明一下我们要用二进制形式传输资源,这个时候参数就很重要。
ftp://prep.ai.mit.edu/pub/gnu;type=d 这里面的type=d就是参数,他是由参数名称和相对应的值组成。其中使用分号“;”和前面的路径区分开。
查询字符串:主要的功能是如果查询某个资源,可以使用特殊的方式减少搜索范围,比如资源是数据库的内容,可以通过查询字符串来使得判断范围更小。
http://www.joes-hardware.com/inventory-check.cgi?item=12731 这里面的item=12731就是查询字符串,他是由名称和相对应的值组成。其中使用问号“?”和前面的内容区分开。多个名值对使用&隔开。

片段:其实这里面的这个片段的作用就是减少显示的内容。假如一个资源比较大,比如说某个html页面有很多内容,我们只需要让其显示某些指定的内容,这就需要使用片段。但是要注意的是:从服务器发送过来的HTML资源是完整的,只是显示在浏览器上是按照指定的内容显示。

HTTP学习笔记(1)ULR语法的更多相关文章
- python3.4学习笔记(一) 基本语法 python3不向下兼容,有些语法跟python2.x不一样
python3.4学习笔记(一) 基本语法 python3不向下兼容,有些语法跟python2.x不一样,IDLE shell编辑器,快捷键:ALT+p,上一个历史输入内容,ALT+n 下一个历史输入 ...
- ASP.NET MVC 学习笔记-2.Razor语法 ASP.NET MVC 学习笔记-1.ASP.NET MVC 基础 反射的具体应用 策略模式的具体应用 责任链模式的具体应用 ServiceStack.Redis订阅发布服务的调用 C#读取XML文件的基类实现
ASP.NET MVC 学习笔记-2.Razor语法 1. 表达式 表达式必须跟在“@”符号之后, 2. 代码块 代码块必须位于“@{}”中,并且每行代码必须以“: ...
- 基于.net的分布式系统限流组件 C# DataGridView绑定List对象时,利用BindingList来实现增删查改 .net中ThreadPool与Task的认识总结 C# 排序技术研究与对比 基于.net的通用内存缓存模型组件 Scala学习笔记:重要语法特性
基于.net的分布式系统限流组件 在互联网应用中,流量洪峰是常有的事情.在应对流量洪峰时,通用的处理模式一般有排队.限流,这样可以非常直接有效的保护系统,防止系统被打爆.另外,通过限流技术手段,可 ...
- Java学习笔记之---基础语法
Java学习笔记之---基础语法 一. Java中的命名规范 (一)包名 由多个单词组成时,所有字母小写(例如:onetwo) (二)类名和接口 由多个单词组成时,所有单词首字母大写(例如:OneTw ...
- CUBRID学习笔记 41 sql语法之select
cubrid的中sql查询语法 SELECT [ ] [{TO | INTO} ][FROM ] [WHERE ][GROUP BY {col_name | expr} [ASC | DESC], . ...
- java web jsp学习笔记--概述-常用语法,指令,动作元素,隐式对象,域对象
JSP学习笔记 1.什么是jsp JSP全称是Java Server Pages,它和servle技术一样,都是SUN公司定义的一种用于开发动态web资源的技术.JSP/Servlet规范.JS ...
- Angular 5.x 学习笔记(1) - 模板语法
Angular 5.x Template Syntax Learn Note Angular 5.x 模板语法学习笔记 标签(空格分隔): Angular Note on github.com 上手 ...
- Webpack4 学习笔记三 ES6+语法降级为ES5
前言 此内容是个人学习笔记,以便日后翻阅.非教程,如有错误还请指出 Webpack 将es6.es7语法降级为es5 需要通过 babel JavaScript编译器. 安装: npm i babel ...
- tensorflow学习笔记(1)-基本语法和前向传播
tensorflow学习笔记(1) (1)tf中的图 图中就是一个计算图,一个计算过程. 图中的constant是个常量 计 ...
- Go语言学习笔记一(语法篇)
国庆节七天假期,这段时间刚好项目那边催的不是很紧,基本上每天都是白天重构一下项目代码,晚上自己学习.(大概是因为容总那边的人都去度假了把项目进度放慢了吧.这两天“彩虹”姐姐也来凑热闹,据说还是直接从澳 ...
随机推荐
- Spark Streaming、HDFS结合Spark JDBC External DataSouces处理案例
场景:使用Spark Streaming接收HDFS上的文件数据与关系型数据库中的表进行相关的查询操作: 使用技术:Spark Streaming + Spark JDBC External Data ...
- HTML音乐播放——切歌
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- spring数据源配置
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-// ...
- MySQL-5.6.13免安装版配置方法
MySQL-5.6.13免安装版配置方法 1. 下载MySQL Community Server 5.6.13 2. 解压MySQL压缩包 将以下载的MySQL压缩包解压到自定义目录下,我的 ...
- 树莓派_360wifi2_佳能MP236打印机
入手树莓派后一直没时间弄,设想用360wifi做无线网卡,也一直不得解,今天成功写下经验 本人刷的是官方系统,版本为3.12.28,首先更新系统内核,参考以下网址: http://groenholdt ...
- NHibernate系列文章十二:Load/Get方法
摘要 NHibernate提供两个方法按主键值查找对象:Load/Get. 1. Load/Get方法的区别 Load: Load方法可以对查询进行优化. Load方法实际得到一proxy对象,并不立 ...
- js生成二维码实例(真实有效)
js文件 qrcode.js 代码 /*from tccdn minify at 2014-6-4 14:59:43,file:/cn/c/c/qrcode.js*/ /** * @fileov ...
- 【转载】大数据量传输时配置WCF的注意事项
WCF传输数据量的能力受到许多因素的制约,如果程序中出现因需要传输的数据量较大而导致调用WCF服务失败的问题,应注意以下配置: 1.MaxReceivedMessageSize:获取或设置配置了此绑定 ...
- 添加图片按钮-UI界面编辑器(SkinStudio)教程
打开工具箱,选择Button控件 在窗体上添加一个Button控件 给Button控件的ImageNormal属性添加图片 添加完成后的效果 删除Text属性的值(即删除显示的文本)
- IE6,IE7上设置body{overflow:hidden;}失效Bug
IE6,IE7下设置body{overflow:hidden;}失效Bug 最近做项目发现在IE7下设置body{overflow:hidden;}后还是会出现纵向滚动条,所以上网查查了,在这里记录一 ...



