2012-03-12 102 views
0

在我们的开发环境中,我们使用jetty,在我们的生产中我们使用tomcat。从javascript中检查服务器版本

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

我知道这是一个有点怪异使用两个版本的服务器,但它只是事情是这样的。

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

有没有一种方式,如果服务器是码头或Tomcat从JavaScript自动检查?

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

回答

1

假设一个/二者的服务器都发送Server HTTP标头(和Jetty通常不会,而且可以很容易地配置为这样做),那么你可以使用一个XMLHttpRequest,并期待在响应头。

在这里阅读更多:Accessing the web page's HTTP Headers in JavaScript

不过,我建议你抽取的代码服务器之间变成1 javascript文件的碎片。例如:

/* 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可以在开发中做得很好。我怀疑你(作为一个团队)正在为自己做更多的工作,而不是真正应该做的。

+0

你的码头服务器也可以在服务器对象上启用'sendServerVersion',并且会返回一个包含它是码头服务器和它的版本的信息的头部。 – 2012-03-12 13:01:41

1

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

相关问题