jquery的post函数

时间:2011-01-21 11:26:52

标签: ajax jquery

我正在运行此代码:

$.post('https://graph.facebook.com/me',{},
     function(msg){
     console.log( "Data Saved: " + msg );
    }
);  

并且我只获得Data Saved :作为输出的firebug nothig其他即将到来并且调用url也没有显示为什么?

1 个答案:

答案 0 :(得分:3)

您无法发布到其他域(或协议或端口)。更具体地说,您可以,但出于安全原因,您无法看到回复的响应。 This is part of the same origin policy个浏览器可以实现防止您的数据在与您访问的页面相同的远程域上发布/利用。

图片例如我已加载http://www.yoursite.com并尝试使用我存储的Cookie等重复发布(作为 me 记住)https://www.mybank.com ...您看到了你真的不希望这种情况发生...这就是为什么它被禁止而你得到的回复将是null而不是实际看到的内容。

在这种情况下,您正在使用JSONP(jQuery中的网址为callback=?)寻找其中一个API调用,这可以通过创建<script>标记来实现...完全不同的东西。在你的情况下,你正在寻找这样的东西:

$.getJSON('https://graph.facebook.com/me?callback=?', function(msg){
   console.log(msg);
});

虽然这不是一个有效的API调用(例如you need an access token at least),但您需要使用the method you're actually looking for代替。


有点切线,但由于这是如此误解,让我们采取另一个更受欢迎的例子来说明如果这是允许的危险。考虑一下您登录的所有服务,Facebook,Twitter等。这是同一原始政策的另一个方面,不允许您使用cookies等等尝试并发布...为什么会这样?如果我的页面可以发布到已经登录的Facebook或Twitter,那么我可以轻松地播放我想要的任何消息...你可以看到这将是多么有用......并且立即使用也是为了邪恶。