express - ExpressJs 响应重定向 URL 被 IIS 更改
问题描述
概括
我的 Express 服务器返回了一个重定向 URL 响应,例如重定向到
https://domain_A.com/babababa
我使用 IISURL Rewrite
将 URL 请求重定向到我的 Express 服务器。通过 IIS 向 Express Server 请求,返回的重定向 URL 已修改,域更改为我的域,如
从更改https://domain_A.com/babababa
为https://my-Domain.com/babababa
问题详情
我的快递服务器
我的 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 通过 IIS https://my-Domain.com/login
,结果我被重定向到错误的 URL https://my-Domain.com/babababa?...
(此页面不存在)
在开发人员控制台 > 响应标头 > 位置它显示https://my-Domain.com/babababa?...
我相信响应位置的域被我的域替换。
根本原因和修复?
任何想法为什么我的 IIS 响应重定向 URL 的域被修改?感谢您提供有关如何修复的任何信息和建议!谢谢你的帮助!
解决方案
根据您的描述,我认为您可能希望将 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。
推荐阅读
- javascript - 如何在 ionic 3 中检查设备中的每个目录
- c# - VS2008 Net 3.5 C# 不能包含 NAudio.csproj:“$”和“=>”的含义
- python - 从另一个文件中删除停用词
- c# - 在 WEB API C# 应用层中存储和访问 HTML 模板的最佳方式
- reactjs - React DnD 用于调整 HTML 表格列的大小
- angularjs - 如何在 angularjs 中创建导航栏/左导航/sidenav,其中每个导航显示来自 json 文件的数据
- c++ - 类模板和构造函数的使用
- laravel - Laravel vue 更新数据
- python - 使 PyQt QRadiobutton 跨多个布局独占
- javascript - 使用 angularjs 创建水平时间轴