我正在使用以下代码对我的服务器进行ajax调用 代码调用服务器,作为回报,它会获取使用相同应用程序的所有朋友的列表。
FB.getLoginStatus(function(response) {
if (response.session) {
uid = response.session.uid;
access_token = response.session.access_token;
$.getJSON(serverLink+"ajax.php?action=getFriendsApp", {token:access_token}
,function(data){
var temp = data;
if(true){
var container = $('#friends_part_main');
var fp = $('#friends_part');
fp.show();
var friends = data;
for(var i in friends){
container.append('<a target="_blank" href="http://www.facebook.com/profile.php?id='+friends[i]+'">\n\
<img src="https://graph.facebook.com/'+friends[i]+'/picture" alt="friend" />\n\
</a>');
}
}
});
}
如果我直接从浏览器(www.mydomain.com/app)运行此代码,则可以正常运行 但是当我从画布页面(app.facebook.com)运行它时,我得到了以下错误:
XMLHttpRequest无法加载 http://www.mydomain.com/src/ajax.php?action=getFriendsApp&token=AAAC0kxh1WAcBAHo3s0QaVy34mgdnCNGvrDZCvIQsZCBHZC8ovR9IuYEFlUKRqK0GgJosWAD6Embg8QrN07vivE6mOuAZAtxUD7WpySDL3wZDZD。 来源https://www.mydomain.com不被允许 访问控制允许来源。
你能弄明白为什么吗?
答案 0 :(得分:3)
对我来说,我的ajax页面“ajax.php”的URL中的域和ajax-calling-page“index.php”的URL并不完全相同。 “www”错过了...... 您必须检查您的两个脚本域(调用脚本和响应脚本)是否完全相同!检查“http”与“https”,查看“https://my-domain.com”与“https://www.my-domain.com”等。 希望能帮助到你。 XXX
答案 1 :(得分:2)
您需要JSONP或允许域上的Ajax请求。您可以使用
强制它header("Allow-Access-Control-Origin:*");
答案 2 :(得分:1)
访问控制允许来源不允许您使用XMLHttpRequest,因为Facebook通过安全https加载您的应用程序,但您只能访问http。您无法从其他sundomain,协议或端口加载。 尝试使用带回调函数的JSONP。您可以从任何地方加载Javascript代码,如果您的响应不仅包含数据,还包含回调函数,您可以从服务器(站点)的任何位置访问任何数据。