1

我正在尝试将Kippt API与 $.ajax 一起使用。

当我使用

curl -X GET -H "X-Kippt-Username:graph1ZzLle" -H "X-Kippt-API-Token:mytoken" https://kippt.com/api/clips/

一切运行良好,我收到了 JSON 响应。

但是,当涉及到将 jQuery 与此脚本一起使用时:

<script type="text/javascript">
var username = "graph1ZzLle";
var token = "*******";

$(document).ready(function() {
    $.ajax({
        url: "https://kippt.com/api/clips/?list=all&include_data=list&limit=10",
        type: 'GET',
        dataType: 'jsonp',
        async: false,
        beforeSend: function(xhr) {
            xhr.setRequestHeader('X-Kippt-Username', username)
            xhr.setRequestHeader('X-Kippt-API-Token', token)
        },
        success: function(data) {

            for(var i = 0; i < data.objects.length; i++) {

                var row = $("<tr/>");
                var date = new Date(data.objects[i]["created"] * 1000); //js works in milliseconds

                $("<td/>").text(date.toLocaleDateString()).appendTo(row);
                $("<td/>").text(data.objects[i]["list"]["title"]).appendTo(row);
                $("<td/>").append("<a href=" + data.objects[i]["url"] + " >" + data.objects[i]["title"] + "</a>").appendTo(row);

                if(data.objects[i]["notes"]) {
                    $("<td/>").text(data.objects[i]["notes"]).appendTo(row);
                } else {
                    $("<td/>").text("-----").appendTo(row);
                }

                row.appendTo("#kippt");
            }
        },
    });
});
</script>

我总是遇到 401(未经授权)错误。我确定我使用了正确的用户名和令牌。到底是怎么回事 ?

4

1 回答 1

5

您不能使用 JSONP 数据类型设置标头。JSONP 请求是通过将<script>标签插入到文档中创建的,并将 src 设置为目标位置,并且由于您无法使用标签传递标头,因此您的标头设置将被忽略。

要么使用 CORS 和 JSON,要么使用为您获取数据的服务器端代理。

于 2013-02-21T16:18:17.687 回答