Jer*_*gan 2 asp.net iis internet-explorer url-rewriting url-routing
我很确定无法做到这一点,但我正在寻找一种黑客或方法将+放在文件夹名称中,比如
http://www.mysite.com/cats+dogs/Default.aspx
我正在使用IIS 7,并尝试创建一个虚拟目录来实现这一点,但它没有用.我不允许将%2B放在资源管理器文件夹或虚拟文件夹名称中.
任何想法我怎么能破解它使它工作?我们已经打印了带有网址的小册子,并且想知道是否有某些方法可以将其替换或者可以做到的一些技巧.
编辑:我能够通过创建一个带有+的虚拟文件夹来解决这个问题,然后重定向到一个URL,该URL指向带有内容的虚拟目录.
IIS 7.0在集成模式下中断ASP.NET 2.0应用程序的更改
以下是该页面的相关摘录,其中显示了变通方法/修复方法.
请求限制和URL处理由于IIS处理传入请求及其URL的方式有其他限制,因此会产生以下更改.
11)默认情况下,拒绝路径中包含未编码的"+"字符的请求URL(不是查询字符串)
您将收到HTTP错误404.11 - 未找到:请求筛选模块配置为拒绝包含双转义序列的请求.
发生此错误的原因是IIS默认配置为拒绝对URL进行双重编码的尝试,这通常表示尝试执行规范化攻击.
解决方法:
1)需要在URL路径中使用"+"字符的应用程序可以通过在应用程序的web.config中的system.webServer/security/requestFiltering配置部分中设置allowDoubleEscaping属性来禁用此验证.但是,这可能会使您的应用程序更容易受到恶意URL的攻击:
Run Code Online (Sandbox Code Playgroud)<system.webServer> <security> <requestFiltering allowDoubleEscaping="true" /> </security> </system.webServer>
做一个url-rewrite你可能会有运气.这可以在web.config中或使用httpmodule轻松完成.
看起来你仍然需要为你的+字符问题使用下面提到的空间或IIS修复,但为了将来的一些灵活性,你总是可以包含用于将URL映射到文件的URL重写.
<httpModules>
<add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
</httpModules>
<rewriter>
<rewrite url="~/cats dogs/Default.aspx" to="~/MyRealFile.aspx" />
</rewriter>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
912 次 |
| 最近记录: |