最近在做一個系統(tǒng)整合的項目,目的是把某政府機關(guān)中的N個系統(tǒng)進行深度整合。由于這些系統(tǒng)分屬于多家不同公司,無法拿到系統(tǒng)的源代碼。
初步構(gòu)思是使用Frame/IFrame將對方的系統(tǒng)加載到頁面中,然后用Javascript模擬用戶的操作去獲取或設置某些信息,以達到深度整合的目的。
技術(shù)上沒有什么太難得地方,但是發(fā)覺Javascript無法操作Frame/IFrame內(nèi)容是不同域的頁面中的DOM,報出的錯誤提示的“沒有權(quán)限”。Google了一下,原來這種操作被成為跨站腳本(XSS),是被瀏覽器禁止的。
解決這個問題的思路是使用代理服務器,將其他系統(tǒng)映射到整合系統(tǒng)所在的服務器上。這樣在瀏覽器看來所有的系統(tǒng)都是同一臺服務器的,就解決了XSS的限制。
我們在這里選用nginx做代理,首先去nginx.org下載程序,nginx支持Windows和*nix操作系統(tǒng)。在開發(fā)環(huán)境中,我們選用Windows版本。
下載完成后,打開conf/nginx.conf,將舊的server節(jié)點完全刪除。在刪除的位置上添加下面代碼
- server {
- listen 8081;
- location / {
- proxy_pass http://192.168.1.10:8000;
- }
這段配置信息的作用告訴nginx創(chuàng)建一個服務,監(jiān)聽在8081端口上,當用戶訪問該Web服務根目錄的時候,代理到http://192.168.1.10:8000端口。
配置完成后,現(xiàn)在就可以在頁面中的Frame/IFrame中訪問http://server_addr:8081/了,也可以用Javascript操作Frame/IFrame中的DOM元素。
整合多個系統(tǒng)就配置多個server節(jié)點,將每個系統(tǒng)配置在不同的端口上既可。
本站僅提供存儲服務,所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請
點擊舉報。