XForwardedSupport用于https播放!对Heroku失败的支持

Mat*_*all 6 heroku mochiweb playframework

我正在Heroku上部署一个应用程序,并尝试确定进入的请求是否安全(request.secure).这最初在heroku上返回false,因为nginx处理SSL工作并通过普通http与app服务器通信.所以为了让游戏读取让我知道这是一个安全的请求,我添加:

XForwardedSupport = 127.0.0.1

按照播放留言板中的建议添加到application.conf.但是,所有请求(图像除外)都会失败,没有错误.在点击播放日志之前,这似乎是一些根本性的事情.有没有人经历过这个?

Jam*_*ard 6

我不认为Play支持通过XForwardedSupport配置参数在Heroku上转发(代理)请求的方式.这需要设置为Heroku负载均衡器的地址,并且没有办法配置预运行时.相反,您应该只查看x-forwarded-proto请求标头以确定对Heorku负载均衡器的请求是否通过httphttps.也许是这样的:

    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);
Run Code Online (Sandbox Code Playgroud)

BTW:Heroku的雪松堆栈不使用Nginx.它使用MochiWeb,一个基于Erlang的Web服务器.