我无法在cloud9中运行typesafe激活器:
激活器页面加载正常,但后来我收到以下错误消息:
"连接丢失;您需要重新加载页面或重新启动 激活。 Activator在另一个标签中打开也是可能的, 导致此错误。"
&#34 ;! @ 6j9pn9913 - 内部服务器错误,(GET) [/home/stream?token=cba94...64394] - > play.api.Application $$匿名$ 1: 执行异常[[RuntimeException:websocket的错误CSRF令牌]]"
有关如何解决此问题的任何帮助?
答案 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是播放应用)。
然而:
当您在无头服务器上构建项目时,activator shell
命令行可能是更好的选择,但我不会说运行UI是100%不可能 - 您可能能够获得它工作。