gpt4 book ai didi

node.js - 快速重定向错误的网址

转载 作者:太空宇宙 更新时间:2023-11-03 22:49:58 24 4
gpt4 key购买 nike

当使用express res函数redirect(url)时,我被重定向到错误的url!

我的网站 URL 是 mywebsite.com :

function myroute(app) {
app.get(/route, function(req, res) {
var url = getMyUrl();
console.log(url); // https://otherwebsite.com/foo?bar=baz [OK]
res.redirect(url); // redirect to https://mywebsite.com/foo?bar=baz [WRONG!]
});
}

我不知道为什么使用良好的参数快速重定向到 mywebsite.com 而不是 otherwebsite.com

不知道为什么...

此错误发生在生产环境中。在我的开发环境中,重定向 URL 是很好的 URL。

提前致谢

编辑

我也尝试过:

res.location(url);

res.setHeader(302, {Location: url});

但它总是重定向到错误的 URL...我的 url 变量很好,但我收到此 header 响应:

HTTP/1.1 302 Found
X-Powered-By: Express
Location: https://mywebsite.com/foo?bar=baz
Vary: Accept\r\nContent-Type: text/html; charset=UTF-8
Content-Length: 170
Date: Fri, 13 Jul 2018 21:52:18 GMT
Connection: keep-alive

编辑2

这里还可以进行更多测试:

res.redirect("https://www.google.fr/toto?key=value"); // https://mywebsite.com/toto?key=value **[fail]**

res.redirect("https://www.google.fr/toto"); // https://mywebsite.com/toto **[fail]**

res.redirect("https://www.google.fr"); // https://www.google.fr **[success]**

如果我添加路径,它似乎不会重定向到我想要的域。有什么想法吗?

编辑3

也许是我的虚拟主机造成的?

<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerName mywebsite.com

ProxyRequests Off
ProxyPreserveHost On
ProxyPass / http://127.0.0.1:5001/
<Location />
ProxyPassReverse /
Order deny,allow
Allow from all
</Location>

SSLCertificateFile ...
SSLCertificateKeyFile ...
</VirtualHost>
</IfModule>

最佳答案

这次提供了一个实际的答案,因为我的上一个答案已(理所当然地)被删除了。

不正确的 URL 重定向肯定是由以下原因引起的:

ProxyPassReverse/

this该指令的作用是:

“让 Apache httpd 调整 HTTP 重定向响应上的 Location、Content-Location 和 URI header 中的 URL。”

就我而言,删除此指令会导致我的应用程序中出现其他内部重定向问题,因此我试图找到一种向其添加异常的方法。

然而,事实证明,如果我调整 Express Node js 配置的“mountpath”以匹配代理服务器的路径,我就永远不需要 ProxyPassReverse(仅 ProxyPass)。不确定这个答案是否能帮助您作为实际的解决方案,但它设法在我的 Node 应用程序上使用 Apache 作为反向代理解决了这个问题。

关于node.js - 快速重定向错误的网址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51216770/

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