jQuery的AJAX跨域使用基本身份验证(jQuery AJAX Cross Domain wit

2019-06-27 01:23发布

我试图通过拉数据到网页来利用魔豆(beanstalkapp.com)API的,使人们可以在不访问我的SVN查看。

我在做什么,试图访问它是通过使用jQuery的通过AJAX请求。 代码如下,但每次我得到一个错误,并不能返回数据。

<script type="text/javascript">
$(document).ready(function() {
    var tok = 'username' + ':' + 'password123';
        hash = btoa(tok);
        authInfo = "Basic " + hash;
    $.ajax({
        url: "http://username.beanstalkapp.com/api/changesets.json",
        beforeSend: function (xhr) { xhr.setRequestHeader ("Authorization", authInfo); },
        type: "GET",
        async: false,
        crossDomain: true,
        dataType: "json",
        success:  function(html){
            console.log(html);
        },
        error: function(html){
            console.log('error');
        }
    });
});
</script>

如果我直接通过浏览器访问的网址( http://username.beanstalkapp.com/api/changesets.json )它工作得很好,并返回JSON。 但是,我不能得到AJAX归还。 任何帮助表示赞赏。 谢谢!

Answer 1:

您将需要为跨域Ajax请求代理。

通常的情形是这样的:

  1. 客户端发送Ajax请求的服务器
  2. 您的服务器将请求转发给外部/远程服务器
  3. 等待从远程服务器响应
  4. 解析并从远程服务器进程响应
  5. 发送响应返回给客户端

如果你正在使用PHP你可以卷曲发送请求,这是很容易实现。 我最近写了一篇关于这个话题的文章http://www.svlada.com/proxy-ajax-requests-curl-and-symfony-2/ 。



Answer 2:

你不能得到比你其他域中的JSON。 这就是所谓的安全问题同根同源的政策来克服它使用JSONP不是JSON。



Answer 3:

选中此的jsfiddle 。 用户名和密码不正确。 给正确的用户名和密码,并再次检查。



文章来源: jQuery AJAX Cross Domain with BASIC Authentication