javascript - 从javascript检查服务器版本

标签 javascript tomcat jetty

在我们的开发环境中,我们使用 jetty,在我们的生产环境中,我们使用 tomcat。

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

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

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

有没有办法通过 javascript 自动检查服务器是 jetty 还是 tomcat?

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

最佳答案

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

在这里阅读更多: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 或类似的东西中生成该文件)

强制警告:我相信您知道,出于这些原因,在开发和生产中使用不同的服务器并不是一个好主意。实现此问题的解决方案后,您将如何知道 tomcat 代码是否有效?
Jetty 不仅可以作为生产服务器,而且 tomcat 可以很好地完成开发工作。我怀疑你们(作为一个团队)为自己做的工作比实际应该做的多。

关于javascript - 从javascript检查服务器版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9664303/

相关文章:

javascript - 将默认时间设置为 mobiscroll 时间选择器

tomcat - 领域和域语法

Broken pipe 错误后 Tomcat servlet 映射错误

servlets - 带有 Jetty 的 SSL 内置到 EC2 上的 Jar 中

security - 如何仅保护 Solr 5.3.1 管理页面

java - 在同一页面上显示结果

javascript - Opengl, Three.js - 如何绘制圆形太阳

javascript - Laravel 未捕获类型错误 : Cannot read property 'addEventListener' of null

java - Spring、Tomcat7中的全局异常处理

java - Log4j、Tapestry 5.1、独立 Jetty 6 不兼容?