首页 > 解决方案 > ExpressJs 响应重定向 URL 被 IIS 更改

问题描述

概括

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

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

问题详情

我的快递服务器

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

我的 IIS 和 URL 重写设置

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

测试

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

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

根本原因和修复?

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

标签: expressredirectiisurl-rewriting

解决方案


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

首先点击Application Request routing cache(如果没有安装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。


推荐阅读