2008-10-02 22 views
3

由於我們不想爲其設置主機,因此我正在製作一些小工具,一些業務人員可以在其本地文件系統上運行該工具。在文件系統上運行的HTML/Javascript應用程序,安全問題

基本上,它的只是HTML + Javascript(使用jQuery)從第三方使用REST獲取一些報告。

的問題是,FF3和IE不允許Ajax調用,我得到:

Access to restricted URI denied" code: "1012 

顯然它的XSS問題...我怎麼解決它?返回的數據是XML格式。

我試圖做這樣說:

$.get(productUrl, function (data){ 
    alert (data); 
}); 

編輯:要清楚......我不是在設置此(辦法不多繁文縟節)內部主機,並由於正在檢索數據,我們無法在外部主持此操作。

編輯#2:一點測試表明,我可以使用IFRAME發出請求。有誰知道是否有任何缺點使用隱藏的IFRAME?

+0

iframe如何工作? – Greg 2008-10-02 19:52:30

回答

2

在類似的情況下,我的解決方案是使用網絡標記,它是IE認可的特殊HTML註釋。它將頁面放置在不同的安全區域中。

參考:MSDN

+0

「。只要該安全區域比本地計算機區域更具限制性,就啓用Internet Explorer以強制網頁在保存該網頁的位置的安全區域中運行」那麼,這樣做不行嗎? – Greg 2008-10-03 14:03:59

-1

如果你已經安裝了Python,Web服務器提供文件可以簡單的

python -c 「import SimpleHTTPServer;SimpleHTTPServer.test()」 

編輯:樓主不能使用這種方法,但總的來說,我認爲這是必經之路用這個問題解決未來用戶的這個特殊問題。

+0

我們對工作站沒有服務器策略......這是爲了保護用戶免受他們的侵害。 – FlySwat 2008-10-02 18:51:17

-1

你控制提供數據的服務器?如果是這樣,你可以設置一個回調。基本思想是你在處理傳入數據的腳本中有一個函數(在你的情況下是一個XML字符串)。然後,服務器使用回調函數的JavaScript片段以字符串作爲參數來響應該請求。而不是使用AJAX,您添加一個新的腳本標記到頁面。這是JSONP的基礎。它看起來像這樣。

本地頁面。

<script> 
    function callback(str) { 
     alert(str); 
    } 
    function makeRequest(param) { 
     var s = document.createElement('script'); 
     s.src = 'http://serveranywhere/script.bla?' + params; 
     document.getElementsByTagName[0].appendChild(s); 
    } 
</script> 

遠程服務器都將返回

callback('<xml><that><does><something></something></does></that></xml>'); 

當腳本添加到頁面,則回調函數將被執行你所提供的字符串。和jQuery調用在$ .ajax調用中使用JSONP爲你做所有這些。希望這可以幫助。

相關問題