gpt4 book ai didi

iis - 应用程序请求路由 : Get Original URL

转载 作者:行者123 更新时间:2023-12-04 21:15:17 24 4
gpt4 key购买 nike

在发生反向代理重写后,我试图从我的应用程序 (MVC 5) 中获取原始 URL。

我已经尝试了所有我能找到的东西,例如

  • 将我自己的服务器变量设置为 {HTTP_HOST} 的值(我的服务器变量以 HTTP 开头)。这要么包含当前 URL,要么为 null。
  • 使用不包含主机名的 HTTP_X_ORIGINAL_URL 服务器变量。
  • 查看所有内置的服务器变量。
  • 设置值 preserveHostHeaders 如下所述:https://stackoverflow.com/a/7180527/4950 ,这导致网站挂起

  • 有任何想法吗?

    尝试在 IIS7 和 IIS7.5 上使用 ARR 3.0 和 Url Rewrite 2.0

    最佳答案

    这个答案的灵感来自 Setting HTTP request headers and IIS server variables在 IIS 文档中。他们做了类似的事情,但奇怪的是它避免检测原始 URL 是使用 HTTP 还是 HTTPS 访问的。

    首先,您需要对 IIS 服务器具有管理访问权限,以便在 URL 重写模块中设置新的允许服务器变量。这在链接的文章中有所描述,但这里是基本步骤:

  • 在 IIS 管理器中,导航到您的网站或应用程序文件夹。
  • 打开 URL 重写功能。
  • 在“操作” Pane 中,单击“查看服务器变量...”,然后单击“添加...”
  • 输入服务器变量的名称。
  • 如果您想将其作为 HTTP header 访问,请在其前面加上 HTTP .例如,HTTP_X_MY_HEADER可通过 X-MY-HEADER 访问标题。

  • 然后,在您的重写规则中,将服务器变量值设置为 {CACHE_URL} .您可以通过 UI 或直接在 web.config 中执行此操作,如下所示。

    注意:请务必根据需要设置匹配、条件和操作。
    <configuration>
    <system.webServer>
    <rewrite>
    <rules>
    <rule name="original URL sample" stopProcessing="true">
    ...
    <serverVariables>
    <set name="HTTP_X_MY_HEADER" value="{CACHE_URL}" />
    </serverVariables>
    </rule>
    </rules>
    </rewrite>
    </system.webServer>
    </configuration>

    生成的 header 将明确包含端口号,例如 http://foo.example:80/bar ,因此您可能需要根据自己的需要进行处理。

    关于iis - 应用程序请求路由 : Get Original URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25183670/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com