【问题标题】:ExpressJs response redirect URL changed by IISExpressJs 响应重定向 URL 被 IIS 更改
【发布时间】:2021-03-22 11:00:43
【问题描述】:

总结

我的 Express 服务器返回了重定向 URL 响应,例如重定向到
https://domain_A.com/babababa

我使用 IIS URL Rewrite 将 URL 请求重定向到我的 Express 服务器。通过 IIS 向 Express Server 请求,返回的重定向 URL 已修改,域更改为我的域,如
https://domain_A.com/babababa 更改为https://my-Domain.com/babababa

问题详情

我的 Express 服务器

我的 Express 服务器在 http://localhost:8022 启动,如果我转到路由 http://localhost:8022/login,它会将我重定向到我的网络之外的页面 https://domain_A.com/babababa

我的 IIS 和 URL 重写设置

我已设置我的 IIS 以使用 URL 重写连接到我的 Express 服务器。

  • 我的域中的 IIS:https://my-Domain.com
  • URL 重写设置:https://my-Domain.com/Express 将请求转发到http://localhost:8022
  • 结果,如果我去https://my-Domain.com/Express/login,请求转发到Express服务器,这与去http://localhost:8022/login相同

测试

如果我直接通过 URL http://localhost:8022/login 访问我的快递服务器,我可以看到我的页面正确重定向到 https://domain_A.com/babababa?...。在开发者控制台 > 响应标头 > 位置显示https://domain_A.com/babababa?...

如果我通过 URL https://my-Domain.com/login 通过 IIS,结果我被重定向到 错误的 URL https://my-Domain.com/babababa?...(此页面不存在)
在开发人员控制台 > 响应标头 > 位置中显示 https://my-Domain.com/babababa?...
我相信响应位置的域已替换为我的域

根本原因和修复?

任何想法为什么我的 IIS 响应重定向 URL 的域被修改?感谢您提供有关如何修复的任何信息和建议!感谢您的帮助!

【问题讨论】:

  • 您好,问题解决了吗?如果您认为我的回复对您有帮助,您可以将其标记为答案。
  • 感谢您的回复,实际上我有一个与响应重定向到第 3 方页面有关的不同问题。我目前“在响应标头中保留重写主机”以避免我的问题,但是当我将 IIS 返回“localhost”重定向到自己时,这仍然产生了另一个问题。这很复杂,但我发现这里的其他帖子可能会有所帮助。再次感谢您的回答。
  • 我认为我的问题对我的问题不是很清楚,无论如何我找到了一些其他资源,这些资源描述了相同的问题更详细的信息以及如何解决的一些方向。更多相关问题:serverfault.com/questions/849064/…
  • 现在问题解决了吗?
  • 感谢@DingPeng 的回答,很遗憾,您的回答并没有解决我的问题。我可能需要一些解决方案,例如设置出站规则来解决问题。还是谢谢。

标签: express redirect iis url-rewriting


【解决方案1】:

根据您的描述,我认为您可能希望使用 IIS 作为反向代理,这里有一个演示:

首先点击Application Request路由缓存(如果ARR没有安装,则必须先安装。):

设置反向代理:

启用反向代理:

这是我的 URL 重写:

        <rewrite>
            <rules>
                <rule name="Test" stopProcessing="true">
                    <match url="(.*)" />
                    <action type="Rewrite" url="http://vpedin456VM/test.html" />
                </rule>
            </rules>
        </rewrite>

此规则会将所有 localhost 请求转发到 vpedin456VM。

访问 localhost,你会在 vpedin456VM 中看到 test.html,IIS 会将 localhost 上的请求分发到 vpedin456VM。

【讨论】:

    【解决方案2】:

    很高兴看到这个链接。

    我的项目遇到了同样的问题。

    HTTPS -> 使用 URL 重写到 HTTP 正在工作。快速重定向出现问题,重定向到公共 URL 被重写回内部网络服务器。

    在 IIS ARR 中,取消选中“Reverse rewrite host in response headers”解决了这个问题。

    (抱歉,由于声誉低,无法投票。我将在获得至少 15 点声誉后返回此页面)

    谢谢大家

    【讨论】:

    • 很高兴这个问题在这里帮助了其他人。我还使用“在响应标头中反向重写主机”重定向到公共 URL。我使用我的 Express 服务器执行 SAML 单点登录,因此我必须重定向到 Microsoft 登录页面。但是,我记得仍有一个限制我无法解决(但忘记了它是什么,因为我的应用程序不会达到该限制,所以我跳过解决它)。一切顺利。
    猜你喜欢
    • 1970-01-01
    • 2017-09-10
    • 2017-07-12
    • 2017-08-05
    • 1970-01-01
    • 2021-06-23
    • 2020-05-10
    • 2019-02-11
    • 2015-01-14
    相关资源
    最近更新 更多