2011-11-01 70 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

相关问题