cross domain jquery get

2019-01-22 08:00发布

I saw some examples of cross domain with ajax but it doesn't work.

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
        <script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
    </head>
    <body>
        <script type="text/javascript" >
            $(document).ready(function () {
                var url = "http://api.twitter.com/1/statuses/user_timeline.json?screen_name=AssasNet&include_rts=1";

                $.get(url, function (data) {
                    console.log(data)
                    alert(data);
                });
            });
        </script>
    </body>
</html>

I try on chrome and the following error is given:

XMLHttpRequest cannot load http://api.twitter.com/1/statuses/user_timeline.json?screen_name=AssasNet&include_rts=1. Origin null is not allowed by Access-Control-Allow-Origin. 

1条回答
\"骚年 ilove
2楼-- · 2019-01-22 08:52

You can't use $.get because that does an ajax call, which will be cross-origin and thus blocked by the Same Origin Policy, and the Twitter API you're trying to access doesn't support Cross-Origin Resource Sharing (or if it does, it doesn't allow either origin null or http://jsbin.com, which is the one I tried).

The API does support JSONP (which is not a true ajax call), though, so just changing the $.get to an $.ajax specifying JSONP works:

$.ajax({
  url: url,
  dataType: "jsonp",
  success: function (data) {
    console.log(data)
    alert(data);
  }
});

Live Example | Source

查看更多
登录 后发表回答