`
moqiang02
  • 浏览: 529543 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
文章分类
社区版块
存档分类
最新评论

Path 和 URL 浅谈

 
阅读更多

1. 通常,path是一个文件系统概念,是某一文件在文件系统中的指针:
C:\xampp\htdocs\index.php 这是windows系统中的写法,其实windows支持斜线(/)和反斜线(\),Unix/Linux只支持(/)。因为(\)会被误认为转义字符, 建议一概使用(/)。另外,windows文件路径中可以有空格C:/xampp/htdocs/images//avatar.jpg是合法的,但在 unix/linux系统中不合法。为了写出“可移植的”php程序,建议统一使用php文件系统扩展预定义常 量:DIRECTORY_SEPARATOR,PATH_SEPARATOR

2. url是http协议下的概念,是互联网上任一资源的指针,所以它是相对主机而言的地址,可以是本站上的资源,也可以是其他主机上的资源。http协议规定,所有的web request都以url的格式给出:
http://localhost/images/user/007/avatar.jpg对应的文件系统路径是:
C:/xampp/htdocs/images/user/007/avatar.jpg
其实web 服务器也接受file path作为请求,只不过会转换协议:file:///C:/xampp/htdocs/images/user/007/avatar.jpg

(注意:因为file path和url都可以定位一个文件,有的文件操作函数比如fopen接受多协议参数:file path,或http url,有的函数只接受path,比如is_file,file_exists)

3. http协议对url的句法做了详细规定:
<scheme>://<user>:<password>@<host>:<port>/<path>;<params>?<query>#<frag>
所以上例url中,<path>段就是/images/user/007/avatar.jpg,web
服务器(apache等)会将这个path映射到文件系统中的file path中去,以获取C:/xampp/htdocs/images/user/007/avatar.jpg

4. 相对url。只有完整的(绝对)url才可以定位一个资源,但如果(显式地或暗含地)指定了一个参考点,就可以使用相对url。相对url是相对当前(或指定)url的url:
比如,在http://locaohost/user/index.php这一脚本中,你可以使用
<img src='http://wyllife.blog.163.com/blog/images/user/007/avatar.jpg' />这一相对url来定位资源,它实际把当前资源的绝对url作为了参考,使用了相对url,得到完整的http://localhost/user/images/user/007/avatar.jpg
相对url不能以/开头,因为凡是以/开头的url都会被解释为基址,比如
<img src='/images/user/007/avatar.jpg />会被解释为:
http://localhost/images/user/007/avatar.jpg

5. url编码问题(涉及到urlencode,rawurlencode,htmlentities,htmlspecialchars等函数的使用)
url 是用户的请求格式,它来自客户的地址栏输入或点击或作为页面构成的资源定位(如img,object),开发人员无法控制客户的输入,但你提供的点击是可 以掌控的。对url编码,是为了服务器获得准确(符合用户本意)和安全(符合服务器安全规范)的url,以提供有效的服务。
url可以用任何字符 构成,但只能以ascii码字符集来传输,所以url中的任何非ascii字符都需要进行转码才能被服务器接受。ascii字符集中一部分具有特殊含义和 功能的字符被称为reserved characters. 要在url中使用保留字符(literal use)也需要做转码。
php函数 rawurlencode/urlencode会将字符串中所有除[a-zA-z.-_]之外的字符进行转码,中文也会被转码(注意部分浏览器会对 encoded的url自动进行解码)。这个问题和html实体问题类似:html文本中可以出现任何字符,但是有些字符对html而言是有特殊含义的 (比如<),有些会被特殊处理(比如连续空格),要使用这些字符,必须使用html 实体,这样导致所有的字符都有其urlencode码(&#number格式的,只有部分有&nbsp;这样的名字),也有其html实 体码。php函数htmlspecialchars和htmlentities的功能就是将字符串中的特殊字符都转换为对应的html实体,以避免造成冲 突和混乱。

(另:表单数据提交是经过html entities转码和url 转码双重处理的,比如input里面输入的"美 女",实际提交给服务器的是%26%2332654%3B+%26%2322899%3B)

分享到:
评论

相关推荐

    安卓URL转path

    安卓URL转path兼容大部分机型,如有不对,请留言安卓URL转path兼容大部分机型,如有不对,请留言

    浅谈as-path及基于as-path的路由过滤.docx

    浅谈as-path及基于as-path的路由过滤.docx

    UiPath教程资料包.rar

    UiPath变量的介绍和使用 UiPath参数的介绍和使用 UiPath条件判断活动If的介绍和使用 UiPath条件判断活动Flow Decision的介绍和使用 UiPath循环活动For Each的介绍和使用 UiPath循环活动While的介绍和使用 UiPath循环...

    浅谈python日志的配置文件路径问题

    如下所示: import logging import logging.config logging.config.fileConfig(path) logger = logging.getLogger('') ...以上这篇浅谈python日志的配置文件路径问题就是小编分享给大家的全部内容了,希望能

    UIpath各组件用法帮助文档_it_uipath_UIpath各组件用法帮助文档_

    UiPath Studio是一个完整的应用程序集成解决方案,可自动化第三方应用程序,管理IT任务和业务IT流程。Studio中最重要的概念之一是自动化项目。项目是业务流程的图形表示。通过让您完全控制执行顺序以及自定义步骤集...

    Uipath注入JS

    Uipath注入JS

    phpstudy配置path_info成功的配置

    phpstudy配置path_info成功的配置 phpstudy配置path_info成功的配置 phpstudy配置path_info成功的配置 phpstudy配置path_info成功的配置 phpstudy配置path_info成功的配置 phpstudy配置path_info成功的配置 phpstudy...

    connect_by_path和connect_by_root比较总结

    通过实例比较了 SYS_CONNECT_BY_PATH 和 CONNECT_BY_ROOT 的异同,和返回树形的数据结构

    java中path和classpath的设置

    path的设置时为了,使我们在其他目录下运行java和javac命令的时候,同样可以找到给程序。

    uipath第一阶段问题和答案

    uipath level1阶段出现的问题,测试题和答案,几乎包括所有问题

    Uipath 社区版

    Uipath开发端、Uipath Studio 2018.3.2社区版、官网下载下来的

    uipath邮件读取和发送

    uipath发送和获取邮件,有不足的地方欢迎大佬私信,试用前请先配置好自己的邮箱,不会的可以看我的博客

    path ranking 算法详解

    知识图谱推理方向的基础算法Path Ranking Algorithm详解

    Java 获取URL的内容

    Java获取URL内容的,我这里只给出GET方式的,POST和其它方式的都是比较类似的。其技术要点就一下三点。 第一:创建HttpURLConnection 第二:打开URL,创建一个InputStream 第三:逐行(逐字节)读取,如果需要,转换...

    uipath 认证45个问题和答案

    uipath认证答案,可以直接搜索问题找答案,答案后边是T的代表true,F代表False,约一百多道题,通过几率很大,

    URI,URL常识

    URI,URL常识,需要的可以看看

    json-path-2.6.0-API文档-中文版.zip

    赠送jar包:json-path-2.6.0.jar; 赠送原API文档:json-path-2.6.0-javadoc.jar; 赠送源代码:json-path-2.6.0-sources.jar;...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。

    UiPath之WordToPDF20190917.docx

    UiPath之Word转换为PDF 前几天在手机上看到其他的文章,里面提到如何将Word转换为PDf,在UiPath的ManagePackage中,下载一个WordToPDF的包,我按照上面的方法试着做了一下,但是在转换的时候很不稳定,总是出现“RPC...

    浅谈python中拼接路径os.path.join斜杠的问题

    今天小编就为大家分享一篇浅谈python中拼接路径os.path.join斜杠的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

    url-resolve:解析多个 url 段,如 path.resolve

    解析多个 url 段,如 path.resolve 用法 var urlResolve = require ( 'url-resolve' ) urlResolve ( 'http://a' , 'b' , 'c' , 'd' ) // =&gt; http://a/b/c/d 接口 url.resolve(from, [to ...])# 另见 安装 $ npm ...

Global site tag (gtag.js) - Google Analytics