在生产中包含devModeRedirectEnabled = true的缺点?

时间:2014-05-23 08:29:40

标签: gwt gwt-super-dev-mode

我今天成功运行了GWT 2.6.1 SuperDevMode,我想知道我们是否可以将这一行留在.gwt.xml文件中:

<set-configuration-property name="devModeRedirectEnabled" value="true"/>

在这篇文章中(http://blog.ltgt.net/how-does-gwts-super-dev-mode-work/),它建议将其删除以供制作。我想知道为什么?

如果我们将其保留用于生产,会对性能或安全造成影响吗?

2 个答案:

答案 0 :(得分:4)

实际上,默认情况下它是 on ,从GWT 2.6.0开始,因为已经添加了安全措施。

来自release notes

  

2.6.0发行说明(RC4)

     

此版本默认启用了Super Dev Mode挂钩

[...]

  

超级模式

     
      
  • 安全性:2.6我们认为打开Super Dev Mode挂钩并将其保留在生产环境中是安全的。作为额外的预防措施,我们建议设置devModeUrlWhitelistRegexp配置属性,以确保它只能从localhost和您自己域中的开发人员的计算机加载JavaScript。

  •   
  • 安全性:在https页面上自动禁用超级开发模式(另一种预防措施,由于混合内容限制,它无论如何都无效。)

  •   

(注意:devModeUrlWhitelistRegexp默认只允许localhost127.0.0.1

答案 1 :(得分:3)

但是,由于Super Dev Mode仍然是一项实验性功能,因此默认情况下不会启用重定向。要为GWT应用程序启用超级开发模式,您当前必须将以下行添加到其module.xml文件中:

 <add-linker name="xsiframe"/>
 <set-configuration-property name="devModeRedirectEnabled" value="true"/>

(目前,只有xsiframe链接器支持超级开发模式。)


但是,您应该注意一些缺点:

  • 确保超级开发模式的工作不完整。与此同时,我们建议仅在localhost或防火墙后运行代码服务器。 此外,作为安全措施,应在生产应用中禁用超级模式。 (即,将devModeRedirectEnabled设置为false。)
  • 我们希望Super Dev Mode能够支持任何现代浏览器,但目前我们只在Chrome和Firefox上进行了测试。 目前,超级开发模式不适用于经典开发模式工作的一些非常大的GWT应用程序。
  • 只有一个GWT链接器支持超级开发模式
  • 目前,只有Chrome调试器支持源地图。我们希望浏览器支持能够得到改进,以便您可以轻松调试仅在其他浏览器中发生的问题,但与此同时,您将不得不求助于其他调试技巧,例如添加日志记录语句和重新编译。
  • 使用超级开发模式时,Java调试器的许多功能都不可用。例如,在Chrome调试器中检查变量时,字段名称和值是JavaScript,而不是Java。
  • 目前,Super Dev Mode不支持像经典开发模式一样运行Java Web应用程序(war文件)。解决方法是在单独的服务器上运行它们。
  • 由于Super Dev Mode不在JVM中运行GWT应用程序,因此不会进行某些运行时检查。例如,当数组索引超出范围时,不会有任何IndexOutOfBoundsException。

由于这些原因,超级开发模式仍被认为是实验性的。

有关完整说明,请参阅2012年6月更新的GWT Super Dev Mode


请查看Running in Production Mode

您所指的是2012年6月更新的文章How does GWT's Super Dev Mode work?