【问题标题】:Include dynamic URL in my URL without using query string?在我的 URL 中包含动态 URL 而不使用查询字符串?
【发布时间】:2011-01-06 14:23:21
【问题描述】:

ASP.NET 3.5、IIS7

在我的 Global.asax 的 Application_BeginRequest 中,我需要从请求的 URL 中提取一个嵌入其中的完全独立的 URL,不使用查询字符串

我想出的解决方案是对整个目标 URL 进行十六进制编码,就好像它是一个目录一样,如下:

http://localhost/687474703A...etc...732E6D7033/irrelevantFilename.txt

这对于 IIS7 失败,其 ASP.NET implementation won't tolerate a URL path greater than 260 characters

我的代码控制了请求 URL 的生成方式,以及它如何将目标 URL 嵌入其中,但它无法控制该目标 URL 值(它们是第三方 URL)。

在我的请求 URL 中嵌入此目标 URL 的效果如何?

【问题讨论】:

    标签: asp.net iis-7 embedding max-path url-obsfucation


    【解决方案1】:

    您可以对其进行 URL 编码,或者使用 base-64 对其进行编码。两者通常都比十六进制编码更紧凑。

    注意:如果 URL 长度超过 200 个字符,那么 260 个字符的限制无论如何都会成为问题。如果 URL 的长度超过 260 个字符......好吧,你可以算一下 :-)

    不过,我不太明白为什么您之后还需要一个单独的文件。您可以使用 404 处理程序,或者直接为每个请求解析。

    顺便说一句:如果您可以选择,最好使用 cookie 或作为 POST 参数嵌入 URL。如果这不是一个选项,您还可以考虑使用 URL 缩短服务,如 http://bit.ly/ 等。这些 URL 真的很短。这一切都取决于 URL 的来源。如果您可以控制这些 URL 的生成,为什么不给它们每个短 ID,并将它们存储在一个表中,并在“解析”URL 时查找它们?

    【讨论】:

    • 客户端是一个 podcatcher(我不知道是哪个),所以没有 cookie 或 POST,它需要一个文件名才能显示。 UrlEncode 和 Base64 都生成对没有查询字符串的 URL 无效的字符? “短 ID” 想法是个好主意,但我希望避免它,因为这个 web 应用程序不需要数据存储。啊...也许我可以使用一个 API 到一个位类型的服务来持久化我的 URL 中的长 URLs ID...
    • 我终于解决了我的问题,使用 URL-shortening 服务 API 来持久化嵌入的 URL。
    猜你喜欢
    • 2014-01-02
    • 2011-09-28
    • 1970-01-01
    • 2011-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-25
    相关资源
    最近更新 更多