HTTP协议之URL

1.什么是URL

URL的全称是Uniform Resoure Locator,统一资源定位器。URL是浏览器寻找信息时所需的资源位置。当一个人将浏览器指向一个URL,浏览器就会在幕后发送适当的协议报文来获取人们所期望的资源。说到URL就不得不说下URI与URN这总是伴随出现的概念。

URI的全称是Uniform Resource Identifier,统一资源标识符。

URN的全称是uniform resource name,统一资源命名。

显然,URI是一个更加抽象的概念,定义了资源的唯一性标识,而URL与URN是他的两种实现。前者根据具体位置定位资源,后者根据名称定位资源。而HTTP协议处理的基本上都是URL。

URL的出现整合了互联网资源的获取方式,使得资源的获取方式都变得明朗起来。

2.URL语法

URL语法可以归纳到下面的通用格式上:

<scheme>://<user>:<password>@<host>:<port>/<path>;<params>?<query>#<frag>
  • scheme:方案名,常见的是http/https/ftp/mail等协议。方案名是大小写无关的,即http://www.baidu.com与HTTP://www.baidu.com是等价的。
  • user:用户名,在http协议中比较少见,默认值是匿名用户"anonymous"
  • password:密码,与上面的user性质相同。在ftp协议中是比较常见的,比如ftp://user:[email protected]/download。如果不指定密码,不同的浏览器实现会发送不同的默认密码。
  • host:主机,资源的具体承载机器。一般使用域名或者IP来表示,使用IP的可以直接定位到具体机器,而使用域名的需要经过DNS解析后获得IP。
  • port:端口,机器上的具体应用。在一台机器上一个端口对应一个应用,有了host+port就定位到资源的具体应用上了。http协议的默认端口是80,https的默认端口是443。
  • path:路径,资源的分级目录。类似于文件系统的路径,可以使用多个/进行层级分割,每层都可以跟参数。
  • params:路径对应的参数,不常用但合法。比如:http://www.baidu.com/china;type=a/beijing;degree=b
  • query:查询字符串,与后端程序交互的关键,以?开始。比如:http://www.baidu.com?item=a&color=b
  • frag:片段,也叫锚点。前面部分可以定位到具体某个资源文件,片段用来标识具体哪一个部分。而片段是不会发送给服务器的,服务器返回整个对象,浏览器根据片段来展示不同效果。

3.URL字符集

  • URL是可移植的,所以为保障安全传输,要选用较小的、通用的字符集。
  • URL要有可读性,所以不可见,不可打印的字符也不能使用在URL中。
  • URL要有完整性,能包含各种复杂的含义,所以通过转义机制将不安全的字符编码转移为安全的字符编码。

介于上述原因,URL的设计者采用了US-ASCII编码,同时引入了转移序列的概念。具体的转译方法就是,将不安全的字符使用一个百分号%,后面跟着两个表示字符ASCII码的十六位进制数。比如空格对应ASCII码为32,所以转义后为%20。

而对于中文字符,则进行这样不同的处理。由于2个十六位进制数是一个字节的长度,所以就是将不安全字符对应的二进制按照字节划分,每个字节前跟了一个%。比如“你好”的十六进制数是e4bda0e5a5bd,经UrlEncode后就是%e4%bd%a0%e5%a5%bd。

时间: 2024-08-09 01:46:49

HTTP协议之URL的相关文章

以双斜杠//开头的URL – 依赖协议的URL

原文:以双斜杠//开头的URL – 依赖协议的URL 不知道大家有没有见过下面这种 url 写法: <img src="//domain.com/img/logo.png"> img 中的url是以双斜杠“//”开头的,这种写法有特殊的用途,它会判断当前的页面协议是http 还是 https 来决定请求 url 的协议.防止IE下出现“This Page Contains Both Secure and Non-Secure Items”的报错. 但是当你浏览本地文件的时候

Html-双斜杠//开头的URL(依赖协议的URL)

今天看京东HTTPS,发现链接都是这种 <a href="//chaoshi.jd.com">京东超市</a> URL是以双斜杠"//"开头的,这种写法有特殊的用途,它会判断当前的页面协议是http 还是 https 来决定请求 url 的协议.防止IE下出现"This Page Contains Both Secure and Non-Secure Items"的报错. 但是当你浏览本地文件的时候,它会解析为 file:

【幻化万千戏红尘】qianfengDay26-Servlet、http协议、URL基础学习:

课程回顾: 线程网络编程SQLiteHTML5 今日内容:ServletHTTP协议XML解析JSON解析正则+注解 网络程序的分类:1.B/S2.C/S 表单的提交方式:1.get:参数信息跟在URL后面传输特点:1.不安全,信息比较敏感2.大小有限制3.中文乱码,URL采用编码格式为:ISO8859-14.效率高2.post:参数信息通过流的形式进行传输特点:1.安全2.大小无限制3.效率低 Servlet:java语言编写的运行在服务器端的程序服务器执行 使用Servlet的步骤:1.创建

HTTP协议之url详解

HTTP使用统一资源标识符(Uniform Resource Identifiers, URI)来传输数据和建立连接.URL是一种特殊类型的URI,包含了用于查找某个资源的足够的信息 URL,全称是UniformResourceLocator, 中文叫统一资源定位符,是互联网上用来标识某一处资源的地址. 以下面这个URL为例,介绍下普通URL的各部分组成: http://www.aspxfans.com:8080/news/index.asp?boardID=5&ID=24618&page

解析http协议的url

package util; import java.io.BufferedReader;import java.io.InputStream;import java.io.InputStreamReader;import java.net.HttpURLConnection;import java.util.List;import java.util.Map;import java.util.Set; public class ServerUtil{ public static StringBu

js获取url协议、url, 端口号等信息路由信息

alert("location:"+window.location); alert("href: "+window.location.href); alert("protocol: "+window.location.protocol); alert("host&port: "+window.location.host); alert("port: "+window.location.port);

http协议以及httpd2.2与httpd2.4的详解

http: http协议: http/0.9:原型版本: http/1.0:cache, MIME(multipupose internet Mail Extensions) method:GET.POST.HEAD.PUT.DELETE.TRACE.OPTIONS.... http/1.1:缓存功能大大增强 speedy:spdy http/2.0 80/tcp 端口 https协议: 443/tcp   端口 IANA: 0-1023:众所周知的,永久地分配给固定的应用使用:特权端口(仅ro

URL类的使用

//创建一个URL实例URL url = new URL("http://www.baidu.com");//通过URL的openStream方法获取URL对象所表示的资源的字节输入流InputStream is = url.openStream();//将字节输入流转换为字符输入流InputStreamReader isr = new InputStreamReader(is, "utf-8");//为字符输入流添加缓冲BufferedReader br = ne

URL 编码

简介 当我们每天上网冲浪时,有一些技术我们无时无刻不在面对.有数据本身(网页),数据的格式化,能够让我们获取数据的传输机制,以及让Web网络能够真正成为Web的基础及根本:从一页到另一页的链接.这些链接都是URL. 通用URL语法 我敢说每个人在其一生中至少见过一次URL.比如"http://www.google.com",就是一个URL.一个URL是一个统一资源定位器 ,事实上它指向了一个网页(大多数情况下).实际上,自从1994年的第一版规范开始,URL就有了一个良好定义的结构.