javascript - 具有基本身份验证的 jQuery AJAX 跨域

标签 javascript jquery ajax cross-domain

我正在尝试通过将数据提取到网页中来使用 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 返回它。任何帮助表示赞赏。谢谢!

最佳答案

您需要为跨域ajax 请求做代理。

通常的场景是这样的:

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

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

关于javascript - 具有基本身份验证的 jQuery AJAX 跨域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11946307/

相关文章:

javascript - 如何保存自动生成字段中的数据并将其与单个 ID 关联?

java - 如何在网页上执行随机 Javascript 代码?

javascript - 使用 jQuery 从 div 中的所有 span 获取文本

jquery - 根据另一个显示 jquery ui 单选按钮

javascript - jQuery 禁用不再在我的 Win8.1 机器上工作

Java- 如何使用 Firebug 或任何 Java 库从 URL 获取 HTML 代码,包括其 AJAX 生成的代码

java - <h :selectOneMenu>'s value not submitted correctly

javascript - 响应式下拉菜单在调整大小之前不会激活

javascript - 访问 NestedViewTemplate 中的子 RadGrid 页脚

javascript - onclick 和 div 上触发 ajax 调用