2011-11-01 66 views
0

我在我的項目中實現YUI自動完成。我創建了一個提供自動填充建議的Web服務。當我在同一臺機器上部署我的應用程序和Web服務時,所有的事情都很好。但是當我在不同的機器上部署Web服務時,它在Firefox中不起作用(但它在IE中工作)。我認爲,因爲它的相同原產地政策不適用於Mozilla。
這裏是我的自動完成代碼如何在Mozilla中解決相同的原產地策略

<script type="text/javascript"> 
YAHOO.example.BasicRemote = function() { 

    // Using an XHRDataSource to connect to web service 
    var oDS = new YAHOO.util.XHRDataSource("http://host_other_than_my_machine/i2b2/services/AutocompleteService/getCodes"); 


    // Set the responseType as XML 
    oDS.responseType = YAHOO.util.XHRDataSource.TYPE_XML; 

    // Define the schema of the delimited results 
    oDS.responseSchema = { 
          resultNode: 'code', 
          fields: ['value']    
         }; 

    // Enable caching 
    oDS.maxCacheEntries = 0; 

    // Instantiate the AutoComplete 
    var oAC = new YAHOO.widget.AutoComplete("myInput", "myContainer", oDS); 

    return { 
     oDS: oDS, 
     oAC: oAC 
    }; 
}(); 
</script> 

我的問題是
1)是同源策略是實際的問題?如果是,那麼IE是不是綁定到相同的政策,因爲我的代碼在IE中工作?
2)如何擺脫它?我知道一些PHP代碼可以用來重定向請求,但我怎麼可以在這裏使用它?

〜Ajinkya。

回答

2

你的問題可能與AJAX請求的起源,你應該看看這個:Cross Origin Request Security

基本上,阿帕奇將需要以下添加到「host_other_than_my_machine」 .htaccess文件:

<IfModule mod_headers.c> 
    Header set Access-Control-Allow-Origin "http://trusted.site" 
</IfModule> 

當然,你將成爲域名替換「http://trusted.site」提出請求。


編輯:如果您需要允許多個遠程域的訪問,你可以簡單地使用:

Header set Access-Control-Allow-Origin "*" 

這通常應該不會有安全問題,但一定要充分考慮您的具體情況下,即如果您通過AJAX響應提供敏感信息。

+0

感謝您的建議,但我不能嘗試這種方法,因爲它將部署在許多機器上,我不確定他們的名字。 – xyz

相關問題