最近一直在开发Ajax应用程序。众所周知Ajax的特点是客户端和服务器分离,客户端通常由纯Javascript组成,通过XMLHttpRequest对象与服务器通信。在调试客户端代码时,如果服务器开在本地,尚可通过samba等方式直接编辑服务器上的客户端js代码,倘若服务器在异地,那么每次修改js代码后通过FTP等方式上传之后再调试就十分费事。说到这里自然会想到将js代码放到本地,然而XMLHttpRequest却只能访问同一域名下的URL,本地的js代码无法直接使用远程服务器上的服务。
(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/webkaifa/)迷茫之际,同事介绍了delegate这款软件,利用它即可实现本地调试客户端代码。
delegate实际上是一个功能强大的代理服务器,它有个类似于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/ 路径下。
另外,如果你需要通过代理服务器访问远程服务器,可以这样设置:
MOUNT="/cgi-bin/* http://server-address/cgi-bin/*" PROXY="代理服务器地址:端口"
在命令行输入以下命令安装delegate。注意不同版本的delegate的可执行文件名不同。
dg9.4.1.exe +=delegate.cfg
打开浏览器,访问 http://localhost/client/。这样即可随时看到对js代码的修改。
实际上,用好这个方法还可以“盗用”许多网站的服务,即自己开发客户端,再通过 delegate 将请求转发给服务器。其方法不再详述。