我正在我的项目中实现YUI自动完成。我已经创建了一个提供自动补全建议的web服务。当我在同一台机器上部署我的应用程序和web服务时,所有的事情都运行得很好。但是当我在不同的机器上部署web服务时,它在Firefox中不起作用(但在IE中起作用)。我认为由于同源策略,它在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。
发布于 2011-11-01 19:20:01
使用由Yahoo提供的PHP代理,并将所有请求重定向到它。http://developer.yahoo.com/javascript/howto-proxy.html
发布于 2011-11-01 16:51:40
您的问题可能与AJAX请求的来源有关,您应该查看以下内容:Cross Origin Request Security。
基本上,对于apache,您需要将以下内容添加到"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响应提供敏感信息。
https://stackoverflow.com/questions/7964158
复制相似问题