【问题标题】:Classic ASP: replacing a string经典 ASP:替换字符串
【发布时间】:2016-06-12 13:26:59
【问题描述】:

以下代码:

Dim url       
url = fso.GetAbsolutePathName(objFile)

给我

C:\KB\Dev\Java.htm

然后,当我把它写成一个href时:

Response.Write("<a href='" + url + "'>" + objFile.Name + "</a><br>")

链接在浏览器中被翻译成:

file:///C:/KB/Dev/Java/Java.htm

而我需要它

file://172.20.4.107/c$/KB/Dev/Java/Java.htm

否则,该链接将无法用于导航。

我在尝试:

url = Replace(url, "///", "//172.20.4.107/")
url = Replace(url, "c:", "c$")
Response.Write(url & "<br>")

但似乎没有任何改变。

【问题讨论】:

    标签: vbscript asp-classic


    【解决方案1】:

    @Keithsuggested 绝对没问题,但在大多数现代浏览器中,您会遇到不同程度的问题,因为来自本地文件链接的超链接被阻止,因为它们存在安全风险。

    更稳健的解决方案是不使用本地文件链接并完全消除风险。如果您可以访问 IIS(如果您使用的是经典 ASP,则可能以某种形式访问 IIS)您可以通过创建指向远程计算机共享的虚拟目录并锁定您认为合适的权限。

    假设您设置了一个虚拟目录以指向别名KB,然后您就可以访问它;

    http://yourhost/KB/dev/java.htm

    如果虚拟目录被映射到

    \\172.20.4.107\c$\KB\

    但是我们可以更进一步,诸如c$ 之类的管理员共享是不可配置的,并且可供系统使用。为了更好地控制映射目录,例如在远程计算机上创建一个共享KB,并根据需要设置 NTFS 权限,然后将虚拟目录指向;

    \\172.20.4.107\KB\

    您也可以调用共享KB$ 来隐藏网络浏览器的共享。

    \\172.20.4.107\KB$\

    有用的链接

    【讨论】:

      【解决方案2】:

      您正在尝试替换 ///,但这些字符不在您的 url 变量中。 urlC:\KB\Dev\Java.htm

      试试这个:

      url = Replace(url, "\", "/")
      url = Replace(url, "C:/", "file://172.20.4.107/c$/")
      

      还请记住,将您的C:\... 路径转换为file://... 格式的是最终用户的浏览器。这在您的 ASP 代码中没有发生。

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-23
      相关资源
      最近更新 更多