url主机域名可以省略_URI和URL详解

2023-05-16

1.URI---用于标示一个抽象或者物理资源

URI定义

URI,通一资源标志符(Universal Resource Identifier, URI),就是由某个协议方案表示的资源的定位标识符,协议方案指的是访问资源所用的协议类型名称。它表示的是web上每一种可用的资源,如 HTML文档、图像、视频片段、程序等都由一个URI进行定位的。

采用HTTP协议时,协议方案就是http。除此之外,还有ftp、mailto、telnet、file等。标准的URI协议有30种左右。

URI结构组成

  • ①访问资源的命名机制;
  • ②存放资源的主机名;
  • ③资源自身的名称,由路径表示。

URI格式

表示指定的URI,要使用涵盖全部必要信息的绝对URI、绝对URL以及相对URL。相对URL,是指从浏览器中基本的URI处指定的URL。 我们看一下绝对的URI格式。

使用http:或https:等协议方案名获取访问资源时要指定协议类型,不区分字母大小,最后附一个冒号。 也可使用data:或javascript:这类指定数据或脚本程序的方案名。

字段介绍

(1)登录信息(认证)

指定用户名或密码作为从服务器端获取资源时必要的登录信息,是可选的。

(2)服务器地址

使用绝对的URI必须有需要访问的服务器地址,地址可以是解析的、点分十进制(IPV4)或者是方括号阔起来的IPV6地址名。

(3)服务器端口号

指定服务器连接的网络端口号。是可选的,若用户省略则自动使用默认端口号。

(4)带层次的文件路径

指定服务器上的文件路径来定位指定的资源。

(5)查询字符串

针对已指定的文件路径内的资源,可以使用查询字符串传入任意参数,此项可选。

(6)片段标识符

可以标记出已获取资源中的子资源。是可选项。

URI实例

https://blog.csdn.net/qq_1121028827/article/details/79516787

解释:这是一个可以通过https协议访问的资源,位于主机 blog.csdn.net上,通过路径“/qq_1121028827/article/details/79516787”访问。

android官方定义方式:

2.URL--用于标示网络资源的位置

URL定义

URL是URI的一个子集。它是Uniform Resource Locator的缩写,译为“统一资源定位符”。通俗地说,URL是Internet上描述信息资源的字符串,主要用在各种WWW客户程序和服务器程序上。采用URL可以用一种统一的格式来描述各种信息资源,包括文件、服务器的地址和目录等。

URL语法(组成)

protocol :// hostname[:port] / path / [;parameters][?query]#fragment
  • ①第一部分是协议(或称为服务方式),用“://”符号隔开【1和2部分,不可省略】。
  • ②第二部分是存有该资源的主机IP地址(有时也包括端口号),用“/”符号隔开【2和3部分,可省略】。
  • ③第三部分是主机资源的具体地址,如目录和文件名等。

具体组成如下:

URL提供了一种访问定位因特网上任意资源的手段,但是这些资源可以通过不同的方法(例如HTTP、FTP、SMTP)来访问,不管怎样,他都基本上由9个部分构成:

 ://:@:/;?#
  1. scheme:获取资源使用的协议,例如http、ftp等,没有默认值
  2. user:password:用户名与密码,这个是一个特殊的存在,一般访问ftp时会用到,他显示的表明了访问资源的用户名与密码。但是这个可以不写,不写的话可能会让你输入用户名密码
  3. host:主机,访问那台主机,有时候可以是IP,有时候是主机名,例如www.baidu.com
  4. port:端口,访问主机时的端口,如果http访问默认80,可以省略。
  5. path:通过host:port我们能找到主机,但是主机上文件很多,通过path则可以定位具体文件。例如www.baidu.com/file/index.html。则path是/file/index.html,表示我们访问/file/index.html这个文件,他很像linux上的路径。
  6. params:这个很少见,主要作用就是像服务器提供额外的参数,用来表示本次请求的一些特性。例如ftp传输模式有两种,二进制和文本,你肯定不希望使用文本形式传输二进制图片,这样你的图片下载下来后可能没法看了。为了向应用程序提供更丰富的信息,URL中有个专门的部分来表示这种参数。例如ftp://file.qiandu.com/pub/guid.pdf;type=d其中的type=d就是params
  7. query:通过get方式请求的参数,例如:www.qiandu.com/index.html?username=dgh&passwd=123
  8. fragment:例如www.qiandu.com/index.html#1。当html页面比较长时,我们通常会将其分为好几段,#1就可以 快速定位到某一段。

URL实例

https://mp.toutiao.com/profile_v3/graphic/publishhttps://www.qiandu.com:8080/goods/index.html?username=dgh&passwd=123#j2sefile://ftp.linkwan.com/pub/files/foobar.txt http://homepage.yesky.com/175/2603675.shtml 

android官方定义方式:

3.URI和URL的区别和联系

URI用字符串标识某一互联网资源,而URL表示资源的地点,即互联网上所处的位置。所以,URL是URI的子集。

HTTP协议格式-实例

1.请求

POST /index.html HTTP/1.1HOST: www.XXX.com User-Agent:Mozilla/5.0(Windows NT 6.1;rv:15.0) Firefox/15.0Username=admin&password=admin

起始行开头的POST表示请求访问服务器的类型,称为方法。随后的/index.html指明了请求访问的资源对象,也叫做请求URI。最后的HTTP/1.1,是HTTP的版本号,用来提示客户端使用的HTTP协议功能。这段请求的内容的意思是:请求访问某台HTTP服务器上的/index.html页面资源。请求报文是由请求方法、请求URL、协议版本、可选的请求首部字段和内容实体构成的。

2.响应

HTTP/1.1 200 OKContent-Encoding: gzip Content-Type: text/html;charset=utf-8Document

this is http response

起始行开头的HTTP/1.1表示服务器对应的HTTP版本。200 OK表示请求的处理结果的状态码和原因短语。响应报文后以一空行分隔,之后的内容是资源实体的主体。

响应报文基本上是由版本协议、状态码、用以解释状态码的原因短语、可选的响应首部字段以及实体主题构成。

告知服务器意图的HTTP方法

HTTP响应码

HTTP报文首部

HTTP请求报文

HTTP响应报文

1.HTTP首部信息

HTTP首部字段包括客户端和服务器分别处理请求和响应提供所需要的信息,包括报文主体大小、所使用的的语言、认证信息等。对于客户端用户来说,这些信息中的大部分内容都无须亲自查看。

2.HTTP首部字段结构

HTTP首部字段是由首部字段名和字段值构成的。

首部字段名: 字段值

3.HTTP首部字段类型

HTTP首部字段分为4种类型。

通用首部字段

请求报文和响应报文都会用到的首部。

请求首部字段

从客户端向服务器发送请求报文时使用的首部。补充了请求的附加内容、客户端信息、响应内容和相关优先级等信息。

响应首部字段

从服务器向客户端返回响应报文使用的首部。补充了响应的附加内容,也会要求客户端附加额外的内容信息。

实体首部字段

针对请求报文和响应报文的实体部分使用的首部。补充了资源内容更新时间等与实体有关的信息。

HTTP/1.1规范定义了47种首部字段。 下面介绍几个常见的首部字段。

HTTP短链接:

一次请求,一次响应,双方响应一来一回。通常服务器关闭响应。例如:对讲机。

HTTP长链接:

一次性建立连接,然后进行通信。例:打电话的过程。

Java中对URI的操作类

@Testpublic void uriTest() throws Exception{ URI uri = new URI("https://www.qiandu.com:8080/goods/index.html?username=dgh&passwd=123#j2se"); System.out.println("scheme : " + uri.getScheme()); System.out.println("SchemeSpecificPart : " + uri.getSchemeSpecificPart()); System.out.println("Authority : " + uri.getAuthority()); System.out.println("host : " + uri.getHost()); System.out.println("port : " + uri.getPort()); System.out.println("path : " + uri.getPath()); System.out.println("query : " + uri.getQuery()); System.out.println("fragment : " + uri.getFragment());}

运行上面的代码,然后得到如下的结果:

Java中对URL的操作

@Testpublic void urlTest() throws Exception{URL url = new URL("https://www.qiandu.com:8080/goods/index.html?username=dgh&passwd=123#j2se"); System.out.println("URL: " + url.toString()); System.out.println("protocol: " + url.getProtocol()); System.out.println("authority: " + url.getAuthority()); System.out.println("file name: " + url.getFile()); System.out.println("host: " + url.getHost()); System.out.println("path: " + url.getPath()); System.out.println("port: " + url.getPort()); System.out.println("default port:" + url.getDefaultPort()); System.out.println("query: " + url.getQuery()); System.out.println("ref: " + url.getRef());}

运行上面的代码,得到以下结果:

UserInfo属性

其实关于资源定位的时候还有一种写法,就是类似于

sftp://tomcat@www.qiandu.com///app/index.pdf

就是在主机名前面有类似于xxx@的东西,其实这种表示就:用户@主机名或者用户@IP。@前面表示登录主机的用户,也就是UserInfo了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

url主机域名可以省略_URI和URL详解 的相关文章

  • 使用 R 进行快速 url 查询

    您好 必须查询网站 10000 次 我正在寻找一种真正快速的方法来使用 R 来做到这一点 作为模板网址 url lt http mutationassessor org cm var var 7 55178574 G A 我的代码是 url
  • 为什么 CSS 中的背景:url 不适用于 Django?

    我的导航栏有以下 CSS 代码 footer navigation background 1841c8 url images nav background gif height 40px padding 0 0 0 20px 但是 当我启动
  • 查找API端点的方法

    API探索 尽管有几个问题涉及该主题 但我找不到解决我想要理解的核心概念的问题 如果知道 API 的根结构 我们可以想象一下http stackoverflow com api service 我们可以成功地从已知端点检索结果 比方说htt
  • 如何从 url 中提取 &client= ? [复制]

    这个问题在这里已经有答案了 如果我的网址是http link ads blogspot com url http could be any url com name 123456789101112 using 纯JavaScript我该如何
  • 编写跨环境传输的 URL 的安全方法

    我目前正在本地计算机上开发一些软件 为了这个问题 我们来调用一下这个软件StackOverflow 我有以下页面 C sites StackOverflow index php C sites StackOverflow content p
  • URL 重写查询数据库?

    我试图了解 URL 重写的工作原理 我有以下链接 mysite com profile php id 23 我想用用户的名字和姓氏重写上面的网址 mysite com directory liam gallagher 然而 根据我读到的内容
  • PHP 路由 - 样式表无效

    我用 PHP 创建了一个基本的路由系统 url 被分割成一个数组 这样我就可以根据 URL 决定显示什么 例如 www domain com page option param 因此 在我的index php 中 我为页眉 内容和页脚定义了
  • SharePoint 发布 HTML 字段控件将相对 URL 转换为绝对 URL

    因此 在对是否应该在面向外部的 SharePoint 网站上使用 CEWP 还是 HTML 字段控件进行了大量研究之后 我们决定使用字段控件 非常感谢 AC 现在 我们遇到了一个问题 我读过的所有博客都说这不应该是一个问题 当我们将相对 U
  • 用作 MAMP 起始页 URL 的 index.* 文件在哪里?

    我试图了解 MAMP 如何管理 Apache Web 服务器 但我找不到index 用作 MAMP 起始页的文件 虚拟主机配置 httpd vhosts conf 不包括在内并且Applications MAMP htdocs仅包含我自己的
  • 如何使用 Perl 从纯文本中提取 URL?

    我需要 Perl 正则表达式来解析纯文本输入并将所有链接转换为有效的 HTML HREF 链接 我已经尝试了在网上找到的 10 个不同版本 但没有一个可以正常工作 我还测试了 StackOverflow 上发布的其他解决方案 但似乎都不起作
  • URL中的gs_upl是什么意思?

    在任何谷歌搜索 URL 中 gs upl 是什么意思 例如 那么 gs upl 1045l1663l0l3648l4l4l0l0l0l0l258l682l0 3 1l4l0 在这里意味着什么 从构建的脚本gs upl j 我找到 funct
  • PayPal API 监听器网站支付标准 URI

    PayPal IPN 指南文档说得很清楚 将请求发布到 www paypal com 或 www sandbox paypal com 具体取决于您是要在沙盒中上线还是测试您的侦听器 等待 PayPal 的响应 该响应要么已验证 要么无效
  • 如何从 Grails 应用程序的 URL 中删除应用程序名称?

    我有一个应用程序在这样的 URL 上运行 http myapp mydomain com myapp http myapp mydomain com myapp 我不想要 myappURL 中的部分 那么如何去掉应用程序名称呢 我只想 ht
  • 如何为codeigniter项目完美设置虚拟主机?

    我正在尝试为 codeigniter 项目制作虚拟主机 我已经在 httpd vhosts conf 中完成了此操作
  • 如何从 URL 流式传输音频而不在设备上下载 mp3 文件

    如何在 Swift 中从 URL 流式传输音频而不在设备上下载 mp3 文件 我需要导入什么 我需要某些库吗 添加任何内容到 info plist 中吗 请评论你的代码 您可以使用 iOS AVPLayer 从 url 传输音频 var p
  • 如何从替换特殊字符的字符串创建 URL?

    我正在尝试从 iframe 内部发出 jsonp 请求 由于某种原因 它似乎不起作用 看到这个question https stackoverflow com questions 20422125 no callback in jsonp
  • 在弹性搜索中使用 GET/POST 时的不同结果

    我正在通过 Elastic Search Head 插件尝试弹性搜索 当我通过 POST 提交查询时 结果符合预期 但是 当我使用 GET 尝试相同的查询时 我总是会返回索引中的所有值 那么 如何通过 GET 将查询传递到弹性搜索服务器 以
  • HTTP 查询字符串和 []

    PHP 使用 在查询参数名称中 以确保多次出现的参数都出现在 GET超全局变量 否则只出现最后一次出现的情况 还有其他软件可以做到这一点吗 但从RFC 3986 https www rfc editor org rfc rfc3986 以及
  • 为什么 window.location 无法加载新页面?

    这段代码以前可以工作 但现在不行了 var url myurl id id phase phase window location url 使用 IE 开发工具栏 我已经验证 url 具有有效的 url 并且 window location
  • 有效的 URL 分隔符

    我有一个很长的 URL 其中包含多个值 示例1 http www domain com list seach type 0 search period 1 search min 3000 search max 21000 search ar

随机推荐