我在Openshift Online在http://rsdbtest-abex.rhcloud.com/
有一个应用程序。它有别名和匹配CNAME
S为以下领域:Openshift 302 mangling
http://rsdb-test.tk/
,http://www.rsdb-test.tk/
,http://sub.rsdb-test.tk/
,http://sub.sub.rsdb-test.tk/
服务器设置到/
明确的请求对象作出回应。任何其他路径生成一个302,其中Location
头设置为路径,因此理论上请求http://rsdb-test.tk/http://sub.rsdb-test.tk
将带您到http://sub.rsdb-test.tk
。这适用于本地,但是退出OpenShift路由器后的位置是http://rsdb-test.tk
。该域被替换为请求的域。如果您在本地运行服务器或从设备内部卷曲,则Location
标头仍然正确,表明我的代码不是问题。
有没有办法解决此问题并重定向到任何域,还是必须使用<meta>
来重定向?
服务器侦听是一个简单的Express服务器:
var express = require("express");
var util=require("util");
var e = process.env;
var config = {
IP:e.OPENSHIFT_NODEJS_IP||"",
Port:e.OPENSHIFT_NODEJS_PORT||80,
TrustProxy:true,
}
var app = express();
app.set("trust proxy",config.TrustProxy)
app.use(function(req,res,next){
var path=req.path.substr(1);
if(path){
res.redirect(302,path);
}else{
res.send(util.inspect(req));
}
});
app.listen(config.Port,config.IP,function(){
console.log("Started");
});
我刚刚在Firefox中尝试http://rsdb-test.tk/hubp://sub.rsdb-test.tk,它的工作原理与您所描述的一样。 – 2016-03-04 13:37:42
它似乎是间歇性的。在写入'http://rsdb-test.tk/http://sub.rsdb-test.tk/http:// sub.sub.rsdb-test.tk /'时不正确地重定向,再次丢弃子域。 – Abex
所以看起来,如果'Location'头以'/'结尾,那么位置就会变形,否则就没有问题。 – Abex