我的服务器上托管了一个json文件。当我尝试向json文件发出Ajax“GET”请求时,它会失败。
在Safari中查看控制台,它说“无法加载资源”。
Firebug显示“200 OK”,但响应未显示。甚至Firebug也没有显示JSON选项卡。
我认为这是因为使用AJAX不允许跨域请求。
我想知道如何克服这个问题?此外,如果我想在我的服务器上启用跨域请求,我相信需要创建crossdomain.xml
文件或其他内容。我不确定,但这就是我所知道的。我在Google上搜索过,但找不到任何相关链接。
非常感谢任何帮助。
感谢。
更新 我没有使用任何服务器端脚本语言(PHP,ASP.NET等)。我使用的是纯HTML和JavaScript / jQuery。
UPDATE-2:
我使用以下代码制作跨域请求:
<script src="jquery-1.6.2.js"></script>
<script>
$(document).ready(function () {
$.ajax({
dataType: 'jsonp',
data: '',
jsonp: 'jsonp_callback',
url: 'http://myhosting.net/myjsonfile.json',
success: function (jsonData) {
alert("success")
alert(jsonData);
},
error: function(errorObj) {
alert(errorObj.statusText);
},
});
});
当我在Firebug的“Net”选项卡中看到时,我看到了一个JSON选项卡,我能够看到json响应。但是,“success”回调处理程序不会被调用,但是“错误”回调处理程序被调用,我收到警告parseerror
。
知道可能出现什么问题吗?
答案 0 :(得分:39)
Access-Control-Allow-Origin: http://yourdomain-you-are-connecting-from.com
目标服务器上的
在php中:
header("Access-Control-Allow-Origin: http://yourdomain-you-are-connecting-from.com");
如果您不想使用服务器脚本语言:将其放入(linux)控制台
a2enmod headers
和你的.htaccess文件添加
Header set Access-Control-Allow-Origin: http://yourdomain-you-are-connecting-from.com
答案 1 :(得分:6)
将此信息放入 .htaccess ,简单的ajax工作
<ifModule mod_headers.c>
Header set Access-Control-Allow-Origin: *
</ifModule>
答案 2 :(得分:3)
由genesis给出的解决方案对我有用,但是我不得不省略url上的尾随斜杠。即:
header("Access-Control-Allow-Origin: http://yourdomain-you-are-connecting-from.com");