无法在cloud9中运行typesafe激活器ui

时间:2014-08-21 21:19:11

标签: cloud9-ide typesafe-activator

我无法在cloud9中运行typesafe激活器:

激活器页面加载正常,但后来我收到以下错误消息:

  • 在浏览器中:
  

"连接丢失;您需要重新加载页面或重新启动   激活。 Activator在另一个标签中打开也是可能的,   导致此错误。"

  • 在cloud9终端中:
  

&#34 ;! @ 6j9pn9913 - 内部服务器错误,(GET)   [/home/stream?token=cba94...64394] - > play.api.Application $$匿名$ 1:   执行异常[[RuntimeException:websocket的错误CSRF令牌]]"

有关如何解决此问题的任何帮助?

1 个答案:

答案 0 :(得分:0)

Activator侦听127.0.0.1,甚至不应该在外部接口上侦听;我并不完全清楚为什么你可以连接到它。

但是,无论该连接有效,看起来结果是CSRF检查失败。 CSRF检查是检查那里的查询参数(?token=cba94...)是否与应该由Activator页面加载设置的cookie匹配。这表明/home/stream请求(打开websocket)来自具有cookie的页面,即来自同一域。也许Activator不知道您正在加载页面的域名,因此cookie丢失了?只是一个猜测。

当CSRF检查失败时,websocket会失败并导致"连接丢失"错误,尽管该错误也可能由干扰websockets的其他事情(如代理和防病毒软件)引起。

您可以通过配置要在此处选择的http.address系统属性来解决此问题,或采取措施解决此问题:https://github.com/typesafehub/activator/blob/52012321b3a5a9f9dcf53582664e385d92763718/ui/app/activator/UIMain.scala#L130 您也可以尝试将application.defaultCookieDomain设置为您正在使用的域(这是Play配置选项,Activator的UI是播放应用)。

然而:

  • 您可能会在此方案中发现其他错误 - 未经过测试或支持
  • 除非你面前有某种经过身份验证的代理(激活器UI上没有auth,并且UI有查看和删除文件的按钮等),否则它根本不安全。

当您在无头服务器上构建项目时,activator shell命令行可能是更好的选择,但我不会说运行UI是100%不可能 - 您可能能够获得它工作。