在我们的开发环境中,我们使用 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/