Facebook 访问控制不允许源站允许源站进行HTTP删除

Facebook 访问控制不允许源站允许源站进行HTTP删除,facebook,api,xmlhttprequest,http-delete,Facebook,Api,Xmlhttprequest,Http Delete,我目前正在玩Facebook JavaScript SDK和Scores API()。我写了一个小应用程序来保存(发布)分数,现在我想删除分数。发布(保存)它们效果很好 我的代码如下所示: var deleteHighScoreUrl = 'https://graph.facebook.com/'+facebook.user.id+'/scores?access_token='+facebook.application.id+'|'+facebook.application.secret; j

我目前正在玩Facebook JavaScript SDK和Scores API()。我写了一个小应用程序来保存(发布)分数,现在我想删除分数。发布(保存)它们效果很好

我的代码如下所示:

var deleteHighScoreUrl = 'https://graph.facebook.com/'+facebook.user.id+'/scores?access_token='+facebook.application.id+'|'+facebook.application.secret;

jQuery.ajax(
{
  type: 'DELETE',
  async: false,
  url: deleteHighScoreUrl,
  success: function(data, textStatus, jqXHR)
  {
    console.log('Score deleted.');
  }
});
“facebook”变量是一个保存我的应用程序数据的对象。对于HTTP POST,它可以正常工作,但是对于HTTP DELETE,我在Firebug(Firefox 10)中得到响应“NetworkError:400错误请求”。我看到Firefox首先发送一个HTTP选项(查看是否允许使用HTTP DELETE),这导致了这个错误,所以我用Google Chrome做了同样的尝试。Google Chrome发送一个真正的HTTP DELETE,然后返回:

“无法加载XMLHttpRequest . 访问控制“允许来源”不允许来源MY_域


我认为这是一个典型的跨领域问题,但如何解决呢?我已将我的域名添加到我的facebook应用程序(at)中,facebook上有一段称为“删除用户的分数”。因此,必须能够删除分数(以某种方式)?

这是跨域安全问题

您的错误包含消息“Origin MY_DOMAIN”这一事实会告诉我,您在代码的某个地方复制了Facebook的一个示例,但没有将MY_DOMAIN的值更改为您正在使用的正确域

我会检查你所有的代码中的值“MY_DOMAIN”


如果您更改了值以隐藏问题中的实际域,请忽略此建议。

由于跨站点脚本编写()无法进行HTTP删除。但是您可以使用查询参数?method=delete发送一个httppost请求,然后删除分数

代码示例:


正如您所想,我只是更改了值以隐藏我的实际域。所以我现在的问题是如何使用HTTP DELETE函数?它在Facebook文档中,所以它必须以某种方式仍然可以访问?
Facebook.prototype.deleteUsersHighScore = function()
{
  var deleteHighScoreUrl = 'https://graph.facebook.com/'+this.user.id+'/scores?access_token='+this.application.id+'|'+this.application.secret+'&method=delete';

  jQuery.ajax(
  {
    type: 'POST',
    async: false,
    url: deleteHighScoreUrl,
    success: function(data, textStatus, jqXHR)
    {
      console.log('Score deleted.');
    }
  });
}