这段代码中的http重定向对我来说很有趣

时间:2013-05-17 19:08:44

标签: http

此问题未在playframework上标记,因为它很可能由具有强大http知识的人解决(而且这些用户倾向于跳过playframework问题)。

playframework 1.2.5包含以下代码片段

if (url.startsWith("http")) {
    //
} else if (url.startsWith("/")) {
    url = String.format("http%s://%s%s%s", request.secure ? "s" : "", request.domain, (request.port == 80 || request.port == 443) ? "" : ":" + request.port, url);
} else {
    url = String.format("http%s://%s%s%s%s", request.secure ? "s" : "", request.domain, (request.port == 80 || request.port == 443) ? "" : ":" + request.port, request.path, request.path.endsWith("/") ? url : "/" + url);
}

此代码碰巧打破了我们的登录/注销,因为它重定向到http是不正确的,因为即使我们的playframework在http中,我们的LB也是https给用户。为什么有人会有这个代码?相对网址不足以进行重定向吗?

我注释掉了代码,现在我们的网站工作正常,但我仍然感觉到为什么这个代码首先放入playframework?

任何想法,猜测都会很棒,或者如果你知道答案,那就更好了。

感谢, 迪安

1 个答案:

答案 0 :(得分:1)

这是302重定向吗?它需要一个符合规范的URL。这并不意味着许多网站不使用相对路径和我见过的浏览器就好了。

两个相关的旧问题: