我正在我的项目中实现 YUI 自动完成。我创建了一个提供自动完成建议的网络服务。当我在同一台计算机上部署应用程序和 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 是否未绑定(bind)到与我的代码在 IE 中运行相同的策略?
2)如何摆脱它?我知道一些 php 代码可用于重定向请求,但我如何在这里使用它?
~阿金基亚。
最佳答案
您的问题可能与 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 响应提供敏感信息。
关于javascript - 如何解决 Mozilla 中的同源政策,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7964158/