小编典典

具有BASIC身份验证的jQuery AJAX跨域

ajax

我试图通过将数据提取到网页中来使用Beanstalk(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)访问该URL,它将正常工作并返回json。但是,我无法获得AJAX来返回它。任何帮助表示赞赏。谢谢!


阅读 516

收藏
2020-07-26

共1个答案

小编典典

您将需要为跨域ajax请求创建代理。

通常情况如下:

  1. 客户端发送ajax请求到服务器
  2. 您的服务器将请求转发到外部/远程服务器
  3. 等待来自远程服务器的响应
  4. 解析并处理来自远程服务器的响应
  5. 发送回复给客户

如果您使用的是php,则可以发送带有curl的请求,并且很容易实现。我最近在http://www.svlada.com/proxy-ajax-
requests-curl-and-symfony-2/上撰写了有关此主题的文章。

2020-07-26