heroku - XForwardedSupport支持https Play !支持Heroku失败

标签 heroku playframework mochiweb

我在Heroku上部署了一个应用程序,并试图确定传入的请求是否安全(request.secure)。最初,这在heroku上返回false,因为nginx处理SSL工作并通过纯HTTP与应用程序服务器进行通信。因此,为了让 Play 器读取 header ,让我们知道这是一个安全请求,我添加了:

XForwardedSupport = 127.0.0.1

按照play留言板中的建议转到application.conf。但是,所有请求(图像除外)都将失败且没有错误。在到达 Play 记录之前,似乎已经发生了一些根本性的事情。有人经历过吗?

最佳答案

我不认为Play支持通过XForwardedSupport配置参数在Heroku上转发(代理)请求的方式。需要将其设置为Heroku负载均衡器的地址,并且无法配置该预运行时。相反,您应该只查看x-forwarded-proto请求 header ,以确定对Heorku负载均衡器的请求是通过http还是https进行的。也许像这样:

    Boolean secure = false;
    if (request.headers.get("x-forwarded-proto") != null) {
      secure = request.headers.get("x-forwarded-proto").values.contains("https");
    }
    System.out.println("secure = " + secure);

顺便说一句:Heroku的雪松堆栈不使用Nginx。它使用MochiWeb(基于Erlang的Web服务器)。

关于heroku - XForwardedSupport支持https Play !支持Heroku失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8512887/

相关文章:

mysql - 这个错误是什么意思? [Erlang、mochiweb、MySQL]

http - 如何测试 mochiweb 应用程序?

node.js - 在 Node js 应用程序中使用 cluster js 时,socketcluster 是否多余?

erlang - Mochiweb 端口 80

php - Laravel 强制 SSL 给出 'This webpage has a redirect loop'

java - Play Framework 2.3.x 外部资源/上传文件夹

scala - 没有类型的隐式参数

comet - Play! 的 Comet 支持如何工作?

ruby-on-rails - 升级到 Rails 4 后 postgresql 服务器上的内存泄漏

django - 导入错误: cannot import name get_path_info