【问题标题】:request.serverVariables() "URL" vs "Script_Name"request.serverVariables() "URL" 与 "Script_Name"
【发布时间】:2010-10-15 22:27:18
【问题描述】:

我正在维护一个经典的 asp 应用程序,在查看代码时,我遇到了两行相似的代码:

Request.ServerVariables("URL")
' Output: "/path/to/file.asp"

Request.ServerVariables("SCRIPT_NAME")
' Output: "/path/to/file.asp"

我不明白...有什么区别?他们都忽略了我设置的将 /path 文件夹作为根文档的 URL 重写(上面的 URL 被重写为“/to/file.asp”)

更多信息: 该站点部署在 IIS 7 上

【问题讨论】:

    标签: url asp-classic request.servervariables


    【解决方案1】:

    URL 给出 URL 的基本部分,没有任何查询字符串或额外的路径信息。对于原始 URL,请使用 HTTP_URL 或 UNENCODED_URL。

    SCRIPT_NAME 正在执行的脚本的虚拟路径。可用于自引用 URL。

    见,http://www.requestservervariables.com/url 和 /script_name 用于定义。

    【讨论】:

    • 该网站是我见过的解释最少的网站之一。不过看起来很漂亮。
    【解决方案2】:

    这可能是 IIS 7 下的错误。

    我无法让 Request.ServerVariables("URL")Request.ServerVariables("SCRIPT_NAME") 返回不同的值。我已经尝试过从包含的文件 (<!--#include file="file.asp"-->) 或在 Server.Transfer 之后调用它们的情况。

    【讨论】:

    • 也许它们只是为了向后兼容而保留?
    • @Jim Robert,我不敢说实话。我现在尝试了不同的变体(调用输出 URL 和 SCRIPT_NAME 的子/函数),但它们始终返回相同的值。同样,这是在 IIS 7 下测试的。
    【解决方案3】:

    在 Server.Transfer 的情况下是否可能存在?

    如果您执行 server.transfer 我认为您会得到不同的结果

    即SCRIPT_NAME 将是例如/path/to.transferredfile.asp 而 URL 将保持为 /path/to/file.asp

    【讨论】:

    • 没有,刚试过。在 Server.Transfer() 之后都是“/path/to.transferredfile.asp”
    猜你喜欢
    • 2015-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-16
    • 1970-01-01
    • 2014-06-18
    • 2015-02-09
    • 1970-01-01
    相关资源
    最近更新 更多