IIS对于Web页中相对路径解析的问题

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介:
  我们知道网页中的路径关系一般有两种情况,一是相对路径,一是绝对路径。今天在调试一个bug的时候,发现IIS对于相对路径的解析有些不一致的问题,害我调试了半天。那么到底是什么不一致呢?

    简单说一下Web页中路径的关系,前面说的绝对路径么没啥可说的,不过有两种情况。一是以protocol prefix开头的绝对路径,这是最绝对了,没有任何含混的东东;二是以"/"开头的绝对路径,这个嘛就是从服务器的根开始算,一般情况下也不会有太大的问题了。相对路径也是两种情况,一是向前定位的路径,一个"../"表示向上一个目录;二是向后定位的路径,这个就很简单了。

    上面那个路径规则在Cmd里面也同样有效,只是没有protocol prefix开头这种说法了,取而代之的是盘符了。比如当前目录C:\AAA\BBB\CCC\DDD\EEE>:
    C:\AAA\BBB\CCC\DDD\EEE>cd ../../../ enter
    C:\AAA\BBB>

    回来说IIS解析路径的问题,我们知道URL路径的目录分格符是:"/"。当我们访问的一个页面的URL是:
    http://www.cnblogs.com/birdshome/archive/2005/05/24/161375.html 的时候,如果我们在"/"随意再加一些"/",使用如下的URL: http://www.cnblogs.com/birdshome//archive///2005///05//24/161375.html,同样可以访问到这个页面,没有任何问题。显然这里IIS把连续的"/"给优化成一个"/"了,这样的处理似乎是没有什么大问题事情。

    可是当IIS在解析相对路径的时候,却是按一个"/"就是一级来解析 hitwall.gif。这样如果我们在目录:../abc/ced中使用../就能回到目录../abc,可是如果是路径../abc//ced,我们使用../page.htm,却成了"../abc/page.htm" angry_smile.gif

    例如html代码为:<img src="../SiteCount.gif">,图片在上一级目录,我们使用URL: http://localhost/images/page.htm时图片完全可以正确的访问,可是当我们把URL改成:http://localhost/images//page.htm后。红叉叉SiteCount.gif就出来了,这时我们点右键看这个图片的属性,路径是:http://localhost/images/SiteCount.gif。不过,IIS向下搜索相对路径的处理没有这个问题。


本文转自博客园鸟食轩的博客,原文链接:http://www.cnblogs.com/birdshome/,如需转载请自行联系原博主。

目录
相关文章
|
10天前
|
开发框架 安全 .NET
文件上传绕过】——解析漏洞_IIS6.0解析漏洞
文件上传绕过】——解析漏洞_IIS6.0解析漏洞
29 4
|
10天前
|
开发框架 安全 应用服务中间件
【文件上传绕过】——解析漏洞_IIS7.0 | IIS7.5 | Nginx的解析漏洞
【文件上传绕过】——解析漏洞_IIS7.0 | IIS7.5 | Nginx的解析漏洞
27 9
|
14天前
|
API C# 开发框架
WPF与Web服务集成大揭秘:手把手教你调用RESTful API,客户端与服务器端优劣对比全解析!
【8月更文挑战第31天】在现代软件开发中,WPF 和 Web 服务各具特色。WPF 以其出色的界面展示能力受到欢迎,而 Web 服务则凭借跨平台和易维护性在互联网应用中占有一席之地。本文探讨了 WPF 如何通过 HttpClient 类调用 RESTful API,并展示了基于 ASP.NET Core 的 Web 服务如何实现同样的功能。通过对比分析,揭示了两者各自的优缺点:WPF 客户端直接处理数据,减轻服务器负担,但需处理网络异常;Web 服务则能利用服务器端功能如缓存和权限验证,但可能增加服务器负载。希望本文能帮助开发者根据具体需求选择合适的技术方案。
45 0
|
14天前
|
Java 数据库 API
JSF与JPA的史诗级联盟:如何编织数据持久化的华丽织锦,重塑Web应用的荣耀
【8月更文挑战第31天】JavaServer Faces (JSF) 和 Java Persistence API (JPA) 分别是构建Java Web应用的用户界面组件框架和持久化标准。结合使用JSF与JPA,能够打造强大的数据驱动Web应用。首先,通过定义实体类(如`User`)和配置`persistence.xml`来设置JPA环境。然后,在JSF中利用Managed Bean(如`UserBean`)管理业务逻辑,通过`EntityManager`执行数据持久化操作。
25 0
|
14天前
|
前端开发 开发者 Apache
揭秘Apache Wicket项目结构:如何打造Web应用的钢铁长城,告别混乱代码!
【8月更文挑战第31天】Apache Wicket凭借其组件化设计深受Java Web开发者青睐。本文详细解析了Wicket项目结构,帮助你构建可维护的大型Web应用。通过示例展示了如何使用Maven管理依赖,并组织页面、组件及业务逻辑,确保代码清晰易懂。Wicket提供的页面继承、组件重用等功能进一步增强了项目的可维护性和扩展性。掌握这些技巧,能够显著提升开发效率,构建更稳定的Web应用。
38 0
|
14天前
|
UED 存储 自然语言处理
【语言无界·体验无疆】解锁Vaadin应用全球化秘籍:从代码到文化,让你的应用畅游世界每一个角落!
【8月更文挑战第31天】《国际化与本地化实战:构建多语言支持的Vaadin应用》详细介绍了如何使用Vaadin框架实现应用的国际化和本地化,提升用户体验和市场竞争力。文章涵盖资源文件的创建与管理、消息绑定与动态加载、日期和数字格式化及文化敏感性处理等方面,通过具体示例代码和最佳实践,帮助开发者构建适应不同语言和地区设置的Vaadin应用。通过这些步骤,您的应用将更加灵活,满足全球用户需求。
28 0
|
15天前
|
监控 网络协议 Java
Tomcat源码解析】整体架构组成及核心组件
Tomcat,原名Catalina,是一款优雅轻盈的Web服务器,自4.x版本起扩展了JSP、EL等功能,超越了单纯的Servlet容器范畴。Servlet是Sun公司为Java编程Web应用制定的规范,Tomcat作为Servlet容器,负责构建Request与Response对象,并执行业务逻辑。
Tomcat源码解析】整体架构组成及核心组件
|
1月前
|
存储 NoSQL Redis
redis 6源码解析之 object
redis 6源码解析之 object
53 6
|
4天前
|
开发工具
Flutter-AnimatedWidget组件源码解析
Flutter-AnimatedWidget组件源码解析
|
22天前
|
测试技术 Python
python自动化测试中装饰器@ddt与@data源码深入解析
综上所述,使用 `@ddt`和 `@data`可以大大简化写作测试用例的过程,让我们能专注于测试逻辑的本身,而无需编写重复的测试方法。通过讲解了 `@ddt`和 `@data`源码的关键部分,我们可以更深入地理解其背后的工作原理。
19 1

推荐镜像

更多