关于url

URL即统一资源定位器用于定位万维网上的文档或其他数据,URL 可以由单词组成,比如 “www.baidu.com”,或者是因特网协议(IP)地址:192.168.x.xxx。大多数人在网上冲浪时,会键入网址的域名,因为名称比数字容易记忆。

通常的网址是这种形式的:scheme://host.domain:port/path/filename

  • scheme - 定义因特网服务的类型。最常见的类型是 http,另外还有https及ftp
  • host - 定义域主机(http 的默认主机是 www)
  • domain - 定义因特网域名
  • :port - 定义主机上的端口号(http 的默认端口号是 80)
  • path - 定义服务器上的路径(如果省略,则文档必须位于网站的根目录中)。
  • filename - 定义文档/资源的名称

比如我们在百度随意搜索,例如输入“html”,我们看到的网址是“http://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&tn=56060048_4_pg&wd=html&rsv_pq=8b388ea00001d60c&rsv_t=eb66yY%2F%2Bi26gFFYMDy%2Fj32oRkFhNPNevYoZc%2BVPhK7rYOfZg1KvGZaOcejzrMdIMre1mDQ&rsv_enter=1&inputT=1116&rsv_sug3=35&rsv_sug1=27&rsv_sug2=0&rsv_sug4=1116”,其中http://www.baidu.com是我们最为熟悉的网址,后面一大堆的字符就是参数,这些参数包括编码,搜索词,分页等等信息。我们在日常工作中也经常能用到这些参数,那么什么是参数?参数是做什么用的?

下面的内容转载自http://www.ps123.net/design/2008/21075.html。

url参数使您将用户提供的信息从浏览器传递到服务器。当服务器收到请求,而且参数被追加到请求的 URL 上时,服务器在将请求的页提供给浏览器之前,向参数提供对请求页的访问。 
      uRL 参数是追加到 URL 上的一个名称-值对。参数以问号 (?) 开始 并采用 name=value. 如果存在多个 URL 参数,则参数之间用 (&) 符隔开。下例显示带有两个名称-值对的 URL 参数:

http://server/path/document?name1=value1&name2=value2

在此工作流程示例中,应用程序是一家基于 Web 的店面。由于希望招徕最大范围的可能顾客,所以站点的开发人员将站点设计得可以支持多种外币。用户登录到该站点之后,他们可以选择使用哪种货币来查看所列商品的价格。 
      浏览器向服务器请求 report.cfm 页。该请求包括 URL 参数 Currency="euro"。Currency="euro" 变量指定所有检索到的货币数值都以欧盟的欧元为单位来显示。 
服务器将 URL 参数临时存储在内存中。 
     report.cfm 页使用该参数来检索以欧元为单位的商品价格。这些货币数值既可以存储在反映不同货币的数据库表中,也可以从与每种商品相关联的单一货币形式转换为应用程序支持的任何货币形式。 
     服务器将 report.cfm 页发送给浏览器,并以请求的货币形式显示商品的价格。此用户结束会话时,服务器将清除 URL 参数的值,释放服务器内存以存放新的用户请求。

当将 HTTP 的 GET 方法与 HTML 表单一起使用时,将创建 URL 参数。GET 方法指定在提交表单时将参数值追加到 URL 请求上。 
      URL 参数的典型应用包括根据用户的喜好对 Web 站点进行个性化设置。例如,由用户名和密码组成的 URL 参数可用于验证用户身份,并只显示该用户已经订阅的信息。这种应用的常见示例包括一些金融 Web 站点,这些 Web 站点可根据用户以前所选的股票代码来显示个人的股票价格。Web 应用程序开发人员通常使用 URL 参数将值传递给应用程序内的变量。例如,可以将搜索语句传递给 Web 应用程序中的 SQL 变量以产生搜索结果。

我们可以把url参数通过get或post进行参数传递,但是由于各大浏览器对URL的传输的处理各不相同,浏览器在传输URl时得对URL进行编码,如果不对中文进行处理,那么中文字符经各个浏览器以自己的编码方式传输到服务器后就出现了各种编码方式,而服务器却只能以一种编码方式来对接收到的URL进行解码。这样的话,和服务器使用的编码方式一样的浏览器在使用带中文的URl时不会出现问题,其他的浏览器则会出现问题。  
  所以解决的办法就是在URL进行传输之前对其中的中文进行编码,使用的编码是和服务器一样的编码,假设服务器使用的编码是UTF-8,则编码语句如下:URLEncoder.encode("中文","UTF-8")。这样对中文进行编码后所有的浏览器都不会再用他们默认的编码方式对中文进行编码,因为此时浏览器看到的已经不是中文了,而是编码后的字节码。这样就避开了浏览器传输URL时编码的差异性问题。  
  对中文参数问题的解决方式和上面一样。但这里所指的中文参数是指以?name="中文参数"方式附在URL后,以get方法传输到服务器的这种形式,并不是以表单形式提交到服务器的。各浏览器对中文参数的处理方式和各自对URL中中文的处理方式都不相同,各浏览器之间也有差异,有的在传输之前不进行编码,有的在传输之前就已经进行了编码,情形非常复杂。  
  但是我们以不变应万变,都用URLEncoder.encode("中文","UTF-8")对中文参数进行编码,这样不管各浏览器怎样对中文参数进行处理,此时经过我们编码后的中文对浏览器来说就是字节码,与a、b、c等字母没有什么区别。但是服务器会用UTF-8编码形式来还原中文参数。

javascript对url常见操作:

//设置或获取对象指定的文件名或路径。
alert(window.location.pathname);

//设置或获取整个 URL 为字符串。
alert(window.location.href);

//设置或获取与 URL 关联的端口号码。
alert(window.location.port);

//设置或获取 URL 的协议部分。
alert(window.location.protocol);

//设置或获取 href 属性中在井号“#”后面的分段。
alert(window.location.hash);

//设置或获取 location 或 URL 的 hostname 和 port 号码。
alert(window.location.host);

//设置或获取 href 属性中跟在问号后面的部分。
alert(window.location.search);

获取参数:

 1 <Script language="javascript">
 2
 3 function GetRequest() {
 4
 5
 6
 7   var url = location.search; //获取url中"?"符后的字串
 8
 9    var theRequest = new Object();
10
11    if (url.indexOf("?") != -1) {
12
13       var str = url.substr(1);
14
15       strs = str.split("&");
16
17       for(var i = 0; i < strs.length; i ++) {
18
19          theRequest[strs[i].split("=")[0]]=(strs[i].split("=")[1]);
20
21       }
22
23    }
24
25    return theRequest;
26
27 }
28
29 </Script>

正则表达式:

1 function getQueryString(name) {
2 var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
3 var r = window.location.search.substr(1).match(reg);
4 if (r != null) return unescape(r[2]); return null;
5 }
时间: 2024-10-10 21:32:03

关于url的相关文章

Django url 标签和reverse()函数的使用(转)

原文:http://www.yihaomen.com/article/python/355.htm 使用url标签和reverse()函数,可以避免在模板和view中对url进行硬编码,这样即使url改变了,对模板和view也没有影响 起初用django 开发应用的时候,完全是在urls.py 中硬编码配置地址,在views.py中HttpResponseRedirect()也是硬编码转向地址,当然在template 中也是一样了,这样带来一个问题,如果在urls.py 中修改了某个页面的地址,

Spring MVC的@RequestMapping多个URL映射到同一个方法

@RequestMapping可以是一个URL对应一个方法,也可以多个URL对应同一个方法,写法如下: @RequestMapping(value={"url","resturl"}) public String url() { return "url"; }

URL

url,uniform resource locator,统一资源定位符,指示互联网上的资源,通常我们称之为网页地址.url可以分为协议.主机.端口号(http默认为80).文件路径.请求参数.定位位置. java语言中可以使用URL类在internet上获取网络资源.它有如下6个构造方法: 1.URL(String spec) 2.URL(String protocol, String host, int port, String file) 3.URL(String protocol, St

ASP.NET取得Request URL的各个部分

ASP.NET取得Request URL的各个部分  网址:http://localhost:1897/News/Press/Content.aspx/123?id=1#toc Request.ApplicationPath / Request.PhysicalPath D:\Projects\Solution\web\News\Press\Content.aspx System.IO.Path.GetDirectoryName(Request.PhysicalPath) D:\Projects

URL Schemes 不能识别和不能跳转的原因

在app跳转的过程中 需要设置url schemes后,但是设置完后,却不能识别, (测试方式:URL scheme + ://)在浏览器中打开,如果能打开app,就是能跳转 今天遇到了一个坑爹的问题,我设置成了,test_app.com 搞了好久就是不行,最后发现,格式问题,换成testapp就好了, 个人建议:不要加特殊字符,毕竟是url嘛

引用nodejs的url模块实现url路由功能

我们在本地创建服务器之后需要写不同的后缀名来访问同一个站点的不同页面,如果不实现路由功能.则每次访问localhost:3000 不论后面写什么  比如localhost:3000/index.localhost:3000/detail...最终都会访问同一个地址:而用url路由则可以实现访问不同的页面:在实现url路由功能之前,首先需要引入url模块:const url = require('url');  nodejs 为我们提供了url模块,并且提供了url模块的一些方法: 最终要的方法是

设计 api, url 的原则

做微信公众号的项目,账号体系使用微信的 openid.现在增加需求,要求适应 web 端--做成普通的 web 项目.然后 url 的变化:我想给现有的 url 加上 /web/ 前缀,从而区分客户端是微信还是普通浏览器. 参考 http://www.informit.com/articles/article.aspx?p=1566460 阮一峰 api 设计原则

php 浏览器URL加密函数urlencode 和rawurlencode函数

urlencode 对URL地址进行加密 urldecode 对URL地址进行解密 rawurlencode 对URL地址进行加密 rawurldecode 对URL地址进行解密 两者的唯一区别在于urlencode 会把空格加密为'+'号,而rawurlencode会把空格加密为'%20', urldecode会把'%20'解密回空格,而rawurldecode不会把'+'号解密回为空格.

Cento7+Nginx 之 URL重写

Cento7+Nginx  之  URL重写 我们前一篇文章写了一个Cento7+Nginx 反向代理实现多域名跳转,今天主要介绍一下Cento7+Nginx  之  URL重写, Hostname:A-S.IXMSOFT.COM IP:192.168.5.20 Role:Nginx server 我们首先准备安装Nginx仓库 Yum install http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.

异步处理未登录url跳转

http://localhost:8080/xxx/login?url=http://localhost:8080/xxx/oldurl // 从url中获取原页面url=http://localhost:8080/xxx/oldurl function GetQueryString(paras){ var url = location.href; var paraString = url.substring(url.indexOf("?")+1,url.length).split(&