最近一直在開發Ajax應用程式。眾所周知Ajax的特點是用戶端和伺服器分離,用戶端通常由純Javascript組成,通過XMLHttpRequest對象與伺服器通訊。在調試用戶端代碼時,如果伺服器開在本地,尚可通過samba等方式直接編輯伺服器上的用戶端js代碼,倘若伺服器在異地,那麼每次修改js代碼後通過FTP等方式上傳之後再調試就十分費事。說到這裡自然會想到將js代碼放到本地,然而XMLHttpRequest卻只能訪問同一網域名稱下的URL,本地的js代碼無法直接使用遠程伺服器上的服務。
迷茫之際,同事介紹了delegate這款軟體,利用它即可實現本地調試用戶端代碼。
delegate實際上是一個功能強大的Proxy 伺服器,它有個類似於Linux的mount功能,能夠將Internet上的URL映射到本地。利用這個功能,即可將遠端伺服器端和本地的用戶端整合到同一個網域名稱下,實現用戶端代碼的本地調試。
方法如下:
將Apache配置到原生8080連接埠,然後將用戶端代碼放在htdocs下,使之能夠通過 http://localhost:8080/client/ 訪問。
下載delegate並解壓縮。 編輯以下的設定檔 delegate.cfg。
-P80 ADMIN="yourname@yourmail.com" MOUNT="/client/* http://localhost:8080/client/*" MOUNT="/cgi-bin/* http://server-address/cgi-bin/*" |
第一行的 -P80 指定delegate使用80連接埠;第二行的ADMIN指定管理員郵件地址,可以隨意設定;第三行將用戶端映射到 delegate 的 /client/ 路徑下;第四行將遠程伺服器目錄映射到 delegate 的 /cgi-bin/ 路徑下。
另外,如果你需要通過Proxy 伺服器訪問遠程伺服器,可以這樣設定:
MOUNT="/cgi-bin/* http://server-address/cgi-bin/*" PROXY="Proxy 伺服器地址:連接埠" |
在命令列輸入以下命令安裝delegate。注意不同版本的delegate的可執行檔名不同。
dg9.4.1.exe +=delegate.cfg |
開啟瀏覽器,訪問 http://localhost/client/。這樣即可隨時看到對js代碼的修改。
實際上,用好這個方法還可以“盜用”許多網站的服務,即自己開發用戶端,再通過 delegate 將請求轉寄給伺服器。其方法不再詳述。