【问题标题】:Play! Framework on Heroku: validation.keep() isn't working over HTTPS玩! Heroku 上的框架:validation.keep() 无法通过 HTTPS
【发布时间】:2012-02-28 06:47:46
【问题描述】:

我正在使用 Heroku 来部署我的 Play!框架应用程序。我有一个使用标准结构的表单

public static void showForm() {
    render();
}

public static void handleForm(@Required param, @Required otherParam, etc) {
    if (validation.hasErrors()) {
        validation.keep();
        showForm();
    } else {
        //process form parameters
    }
}

这适用于:

  • localhost:9000 运行 HTTP 的开发机器
  • heroku 在www.myapp.com 运行 HTTP
  • localhost:9443 运行 HTTPS 的开发机器

但是,对于在 Heroku 上通过 HTTPS 在 secure.myapp.com 使用基于主机名的 SSL 执行此操作的表单,验证不会显示。我认为问题在于validation.keep() 不起作用。

如果validation.keep() 制作了一个cookie,而问题与www.myapp.comsecure.myapp.com 之间的差异有关,那么我可能会遇到更深层次的问题,因为:

  • 我已经有application.defaultCookieDomain=.myapp.com,根据this question
  • 我认为 GET 和 POST 都是通过 HTTPS 进行的,所以我认为它们具有相同的域...
    • 表单的 GET 肯定是通过 HTTPS 的
    • 处理表单数据时,其结果肯定会通过 HTTPS 显示
    • 我猜 POST 可能是通过 HTTP 进行的(因此 www.* 而不是 secure.*,但我不确定如何检查)。

任何人都猜测出了什么问题?

【问题讨论】:

    标签: https heroku playframework session-cookies


    【解决方案1】:

    目前在 heroku 上播放的 ssl (x-forwarded-proto) 支持不兼容,导致所有请求都被视为不安全。

    https://play.lighthouseapp.com/projects/57987/tickets/1385-requests-are-never-secure-on-heroku-when-using-ssl

    所以这可能与您的浏览器发回的 cookie 有关?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-02
      • 2017-11-05
      • 2012-07-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多