从javascript检查服务器版本

时间:2012-03-12 09:15:22

标签: javascript tomcat jetty

在我们的开发环境中,我们使用jetty,在我们的制作中我们使用tomcat。

对于某些功能,我们使用javascript,但是有一些硬编码的位置可供使用jetty或tomcat。

我知道使用两个服务器版本有点奇怪,但就像它一样。

现在,当我们构建应用程序时,有时人们忘记更改javascript文件中的服务器版本。

有没有办法从javascript自动检查服务器是Jetty还是tomcat?

我正在考虑将一个txt文件放在tomcat的根目录中,并让它检查它是否存在,但也许有一种方法可以更原生地进行。

2 个答案:

答案 0 :(得分:1)

你可以向服务器发出ajax请求,如果每个人都以独特的方式响应,你就会知道哪个是哪个。无论是在特定文件中存在不同文件还是不同内容,服务器都可以通过多种方式将自己与客户区分开来。

答案 1 :(得分:1)

假设您的一个/两个服务器都在发送Server HTTP标头(Jetty通常会这样做,并且很容易配置为这样做),那么您可以使用XMLHttpRequest并查看响应标题。

在此处阅读更多内容:Accessing the web page's HTTP Headers in JavaScript

但是,我建议您将服务器之间更改的代码段提取到1个javascript文件中。 e.g:

/* server_info.js */
locations = {
   file1 : "/some/path",
   file2 : "/another/path"
};

并在所有网页中将该文件包含为<script> 然后你可以让Jetty和Tomcat各自使用该文件的不同版本。应该很容易拥有一个servlet(或过滤器,或者动作,或者框架中存在的任何东西)来查看服务器类型并提供正确的文件。

如果那太多了,那么你可以做同样的事情,但只需要:

/* server_info.js */
server_type = "tomcat";

按服务器改变该文件(您可以在JSP中轻松生成该文件,或类似的东西)

强制警告:我相信你知道,出于各种原因,在dev和prod中使用不同的服务器并不是一个好主意。一旦你实现了这个问题的解决方案,你怎么知道tomcat代码有效? Jetty不仅能够成为生产服务器,而且tomcat可以在开发方面做得很好。我怀疑你(作为一个团队)正在为自己做更多的工作,而不是真正的工作。