Playframework 中 HTTPS 协议中的重定向控制器方法

Posted

技术标签:

【中文标题】Playframework 中 HTTPS 协议中的重定向控制器方法【英文标题】:Redirect controller methods in HTTPS Protocol in Playframework 【发布时间】:2014-05-27 12:02:12 【问题描述】:

我们使用 Play 框架 1.2.x。

我们使用 Amazon ELB 来处理 SSL。因此,从浏览器到 Amazon ELB 的请求是 https。从 Amazon ELB 播放它的 http。

我们使用将一种控制器方法重定向到另一种。因此,当我们进行重定向时,当我们通过调用另一个控制器方法而不是 https 进行重定向时,播放总是发出 http 请求,因为它只接收 http 请求。但是当我们从一个控制器方法重定向到另一个控制器方法时,我想指定协议

【问题讨论】:

【参考方案1】:

请在您的application.conf 中包含该代码:

application.baseUrl=https://example.com/
XForwardedSupport=all
XForwardedProto=https
application.session.httpOnly=true
application.session.secure=true

我的应用程序包含以上所有内容,并且已经正常运行了 2 年。

【讨论】:

XForwardedSupport=all 为我工作,无需任何其他配置。我不确定为什么它可以在没有 XForwardedSupport 的情况下与 http 一起使用,但在使用 https 时会失败。 XForwardedProto=https 仅在您有反向代理(负载平衡器)时使用,该代理通过 HTTPS 进行控制,然后通过 HTTP 与 Web 服务器通信。如果您没有控制 HTTPS 的反向代理,则可以删除该行。但我认为你可以毫无风险地加入。 :) 在我的情况下,终止 HTTPS 的代理 (ELB) 包括 X-Forwarded-Proto 作为 HTTPS,播放正确检测。 啊,没错。 XForwardedProto 仅在 ELB 不转发 HTTPS 播放时才有用。【参考方案2】:

将 application.conf 中的 baseUrl 属性设置为如下所示:

baseUrl=https://myserver.com/myapp    

【讨论】:

以上是关于Playframework 中 HTTPS 协议中的重定向控制器方法的主要内容,如果未能解决你的问题,请参考以下文章

sbt.build 用于多个项目和 playframework

PlayFramework HTTPS 仅在 prod 模式下路由,HTTP 在 dev 模式下

Playframework 的社会群体?

在 Eclipse 中调试 Playframework

如何将excel数据导入playframework

在 Playframework 中忽略 withRequestTimeout