【问题标题】:Serving .config files提供 .config 文件
【发布时间】:2011-08-25 20:19:14
【问题描述】:

我在我的组织中维护了一个旧版(经典 asp)CRM。用户可以通过网络前端上传文件,文件存储在网络共享中,文件名、上传者等保存到数据库中。除了 .config 文件外,一切都很好。

出于某种原因,某些人可以正常下载这些内容,但其他人收到此错误: 您请求的页面类型未被提供,因为它已被明确禁止。扩展名“.config”可能不正确。

在某些用户计算机上,文件的链接似乎是“file://networkshare/filename”(有效),而在其他计算机上则是“http://networkshare/filename”。 (这不起作用)

我在 iss6 中将 .config 的 mime 类型设置为 text/plain。所有用户都在运行 IE8。

页面上的代码根据从数据库返回的记录创建一个 href 链接。

那么为什么在不同电脑上的同一浏览器中呈现链接的方式会有所不同?如何允许 .config 文件允许人们查看网站 web.config?

建立链接的代码是:

function getlink(file_nm,path)
{   
    thisPage.navigate.CheckDocumentAttachedToRequest(file_nm, path)
    var sDocLink = path.replace(/\//g,"\\") + "\\" + file_nm;
    return "<A class=\"parislink2\" TARGET=\"_BLANK\" HREF=\"\\\\" + thisPage.get_sServerName() + "\\" + sDocLink + "\">" + file_nm + "</A>";
}

【问题讨论】:

    标签: iis


    【解决方案1】:

    很奇怪。

    我知道如果客户端请求引用未在 MIME 类型中定义的文件扩展名,IIS 6 将返回错误 404.3。

    但是您确实定义了它。您可以尝试在 mime 类型中使用通配符 () 作为测试。 ( 用于文件扩展名,text/plain 用于 MIME 类型。)通配符可能存在安全风险,但如果您提供配置 .. 可能此应用程序和服务器位于您的网络内部,这样就可以了使用通配符。

    我还会检查您的 ISAPI 扩展(不是过滤器,而是扩展)并确保 .config 还在里面。它应该是默认的。

    在 IIS 中的全局级别定义 mime 类型应该向下过滤并覆盖在文件夹级别设置的任何 mime 类型。

    每次更改 mime 类型时都需要重置 IIS。

    也许是浏览器的问题? (客户端的链接不起作用的问题..诸如“浏览器控制”之类的问题。)

    好像有些浏览器在构建链接时正确地解释了您的函数......而其他浏览器在从函数调用呈现 HTML 时将“http”而不是“file”替换为协议。也许您可以将您的函数硬编码给我们“文件:”作为放置在链接代码开头的字符串。 (试图覆盖由服务器发回的 HTML 或由 IE8 呈现的任何“http”字符串。)

    在上面的帖子中,出于安全目的,通配符被过滤掉了。 (通配符 = “星号”)

    【讨论】:

    • 我对文件进行了硬编码:前缀。我真的不喜欢这样做,但它完成了工作
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-15
    • 2015-03-24
    • 2015-06-13
    • 2013-06-14
    • 2018-07-28
    • 1970-01-01
    • 2022-01-06
    相关资源
    最近更新 更多