2012-03-12 103 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請求,如果每個人都以獨特的方式響應,您將知道哪個是哪個。無論這是在特定文件中是否存在不同的文件或不同的內容,服務器可以通過多種方式將自己與客戶區分開來。

相關問題