http学习笔记(二)—— 嘿!伙计,你在哪?(URL)

 我们之所以希望浏览网页,其中一个重要的原因就是庞大的web世界中有很丰富的资源,他就像哆啦a梦的口袋,随时都能拿出我们想要的宝贝。这些资源通过http被传送到我们的浏览器,并展示到我们的屏幕上。而我们之所以可以准确地找到这些资源,是URL(UniformResourceLocator,统一资源定位符)帮我们确定了它们(资源)的位置。

  

  在没有 url 之前,我们想获取资源,必须要先想办法,连接到一个服务器上去,这个过程中可能还需要登陆,然后在服务器上找到目录,然后切换成二进制模式,这样才可以获得自己的资源。这个过程很繁琐,而且,用户也不一定会使用。直到互联网之父蒂姆·伯纳斯·李(就是在伦敦奥运会开幕式上打出this is for everyone的大师)发明了URL。

URL初窥

比如这是一个完整的地址:

  http://www.abc.com/index.html

URL将这个整个地址分成了三个部分:

  ①方案  ②主机名 ③资源路径

其中 :

  http:// 是方案,它规定了我们使用哪种方式访问目标地址。

  www.abc.com 是目标主机名  实际上它会被DNS服务器解析为一个IP地址。

  最后index.html 是资源的路径。

现在来详细地看看这些东西。

URL语法

几乎所有的URL都遵循规定的URL语法:

  <scheme>://<user>:<password>@<host>:<port >/<path>;<params>?<query>#<frag>

接下来我们详细地看看每个部分:

<scheme>(方案):

  在巨大的网络世界里有很多服务器(比如samba、ftp、mail等等),每种服务器都有一些特定的服务方式访问它们。比如我们在访问ftp服务器时可能会输入:

  ftp://www.abc.com

  ftp:// 在这里就是我们使用的传输协议,这也是url告诉服务器要采用什么方案来传输资源一种方式。这就好像我们放假约哥们儿出去喝酒,你打电话给他,他总不能拿邮箱接电话吧。

<user>:<password>

至于账号和密码,这个很好理解,假如我们在学校或者公司有ftp服务器,它有时会要求用户输入一个登录名和一个密码来登陆到ftp。通过url访问这个服务器时候,用户名和密码就会被加在这个地方。

<host>:<port >

  主机就是客户端要访问的目标服务器。

  端口就是目标服务器上为客户端提供的服务使用的监听端口,最典型的就是web服务器的80端口。服务器通过端口准确地确定客户端需要的资源从哪个服务获取。

<path>

路径说明了这个资源在这个服务使用的目录下的位置

<params>

  参数,有些方案不仅仅满足于账户和密码提供的信息,他们需要更多的参数来确定传输的方式。这些参数用   ;     号和URL其他部分分开

  比如:   ftp:/www.abc.com;type=d

  这个例子中  type是参数名   d是这个参数的名字。服务器端的服务程序接收到这个url 请求后,知道用type 采用d模式

<query>

  相信学习web的童鞋一定都用过问号传值, 我们常常通过这个查询组件,确定数据库查询的范围,并确定客户端希望获得的资源。并且和参数一样,查询不局限于一个单一的参数。他们可以通过&连接符传递多个查询。

  比如: http://www.abc.com/xxx.html?type1=value1&type2=value2&type3=value3

<frag>

  最后这个片段,相信大家也一定不会陌生,它就像我们在看电子书时用的书签。在这个页面中的某一个部分,开发者给他定义一个名字,当用户打开这个页面想访问这个部分的时候,通过这个片段组件找到这个片段。就好像喊一下这个片段的名字,它就立马就跑到我们前面来了。

  这个组件还是很有用的。有时候用户需要访问一个篇幅很长的页面,而他们并不想阅览所有的内容,用户只是想看到他们需要的部分,如果使用滚动条的方式阅读找到这些内容会很吃力。但是网站的设计者在页面中为某一部分设定了名字,那用户很快就可以找到这些内容了。

以上就是url的一些解释了。

相对路径

之前所了解的都是绝对路径。现在来看看相对路径。

假如在开发一个页面时,我们写访问路径,每次都要写下一个完整的URL,那简直是太残暴了。

况且我们开发时很少知道这个开发的页面,未来会用什么域名,这个站点的所有文件未来会被摆放到什么位置。相对路径解决了这个问题。假设我们访问这个路径:

www.abc.com/index.html

而这个页面中有一个连接指向 www.abc.com/page1.html

在index.html中的连接就可以这么写 <a href=”./page1.html”></html>

浏览器会自动补齐页面的路径,下面是一个例子:

这个是一个简单的页面中的一个图片链接

经过浏览器整理之后它就变成了

这个相对路径后面也可以进行参数、片段、查询字符串的使用。

当然浏览器不可能凭空补全这个路径:找到它基础URL这两种方式:

1、在html文档中显示地使用一个<base>标签标记。所有相对URL通过这个<base>中定义的路径来补齐绝对路径

2、如果没有这个<base >标签,那么浏览器就会把当前页面的URL作为基础。

通过URL,我们很方便地就找到了自己想要的资源,甚至大多数用户都不用知道他们需要使用什么协议和方法,就可以很轻松地对资源说:嘿!伙计,我找到你了!

 
 

http学习笔记2(URL)的更多相关文章

  1. thinkphp学习笔记6—url模式

    原文:thinkphp学习笔记6-url模式 入口文件是应用的唯一入口,因为可以多入口,每个应用可以对应一个入口文件,系统会从rul参数中解析当前请求的模块,控制器,操作.ThinkPHP是区分大小写 ...

  2. 学习笔记:URL Protocol在浏览器中打开本地应用程序

    看到阿里的网站上可以通过点击卖家的旺旺图标从而调用本地的阿里旺旺程序,而且还可以传递当前浏览者需要咨询的商品.这是怎么实现的呢?是通过URLProtocol来完成. 原理还没有太清楚,即在系统里注册一 ...

  3. node.js在windows下的学习笔记(10)---URL模块

    1.parse函数的作用是解析url,返回一个json格式的数组 url.parse('http://www.zjut.edu.cn'); { protocol: 'http:', slashes: ...

  4. Django学习笔记之URL与视图

    视图 视图一般都写在app的views.py中.并且视图的第一个参数永远都是request(一个HttpRequest)对象.这个对象存储了这个http请求的所有信息,其中包括携带的参数以及一些头部信 ...

  5. Asp.net core 学习笔记 (操作 url and query params)

    更新 :2018-7-25 直接添加 query string. var resetPasswordLink = QueryHelpers.AddQueryString($"{Request ...

  6. JMeter学习笔记--使用URL回写来处理用户会话

    如果测试的Web应用系统使用URL回写而非Cookie来保存会话信息,那么测试人员需要做一些额外的工作来测试web站点 为了正确回应URL回写,JMeter需要解析从服务器收到的HTML,并得到唯一的 ...

  7. Django学习笔记之URL标签的使用

    期初用django 开发应用的时候,完全是在urls.py 中硬编码配置地址,在views.py中HttpResponseRedirect()也是硬编码转向地址,当然在template 中也是一样了, ...

  8. 7.2(java学习笔记)URL

    一.URL URL类表示统一资源定位符,指向万维网上“资源”的指针. 资源可以是简单的文件或目录,也可以是对更复杂对象的引用,比如对数据库或搜索引擎的查询. URL即是定位也是资源,定位到网络中一个具 ...

  9. NodeJS学习笔记 (14)URL查询字符串-querystring(ok)

    模块概述 在nodejs中,提供了querystring这个模块,用来做url查询参数的解析,使用非常简单. 模块总共有四个方法,绝大部分时,我们只会用到 .parse(). **.stringify ...

  10. MVC4 学习笔记 之 URL中存在编译的空格 20%20%

    /Config/Edit/QQCC%20%20%20%20%20%20%20 原因是: 通过EF直接添加了空格? NO 是因为你的数据库字段设计问题,因为你当然设计如>:sID nchar(10 ...

随机推荐

  1. 多线程编程 (1) -NSThread

    每个iOS应用程序都有个专门用来更新显示UI界面.处理用户触摸事件的主线程,因此不能将其他太耗时的操作放在主线程中执行,不然会造成主线程堵塞(出现卡机现象),带来极坏的用户体验.一般的解决方案就是将那 ...

  2. GhostDoc的使用

    原文:GhostDoc的使用 一.简介 GhostDoc是Visual Studio的一个免费插件,可以为开发人员自动生成XML格式的注释文档. 二.下载 需要的朋友可以去这里下载,填个Email地址 ...

  3. 如何将sqlserver表中的数据导出sql语句或生成insert into语句 [转]

    输入表名,生成插入语句 drop proc proc_insert //如果存在就删除 go create proc proc_insert (@tablename varchar(256)) as ...

  4. Cocos2d-x3.0 TestCPP文件夹的注意事项

    1.不多说了,重力加速度. 2.ActionMangerTest:此Test它是由导演来展示,以获得集体诉讼经理ActionManager类别,操作控制节点. ①CrashTest:破坏demo,毁. ...

  5. Linux 查看和删除进程

    1. 在 LINUX 命令平台输入 1-2 个字符后按 Tab 键会自动补全后面的部分(前提是要有这个东西,例如在装了 tomcat 的前提下, 输入 tomcat 的 to 按 tab).2. ps ...

  6. 关于s2sh框架关于hibernate懒加载问题的说明和解决方案

    首先我们来看下面这个图,解释了一个web程序的一次请求流程! 懒加载异常的说明: 懒加载就是我们在查询一个对象时,它所有的属性是否要被查出来! 如果懒加载开启的话,session在service层就被 ...

  7. JUnit介绍

    8.1.1  JUnit简介 JUnit主要用来帮助开发人员进行Java的单元测试,其设计非常小巧,但功能却非常强 大. 下面是JUnit一些特性的总结: — 提供的API可以让开发人员写出测试结果明 ...

  8. yii中登录后跳转回登录前请求的页面

    当我们请求一个经过权限控制的请求不通过时,会跳转到一个地方请求权限,请求结束后需要跳转回之前的页面.比如我们请求一个需要登录的action,会被跳转到login页面,我们希望登录成功后跳转到我们之前希 ...

  9. div、ul、li等无法居中问题,text-align无效 margin auto无效

    很简单.如果是div,直接把div换成: <table align="center">        <tr>            <td> ...

  10. 输入 URL 到页面完成加载过程中的所有发生的事情?

    转到浏览器中输入URL给你一个页面后,.有些事情,你每天都在使用,学的是计算机网络知道是怎么回事.DNS解析然后页面的回馈,只是要讲好还是有难度. 之前fex团队的nwind专门写过这个问题的博客: ...