1

$.ajax でKippt APIを使用しようとしています。

私が使うとき

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 (UNAUTHORIZED) エラーが発生します。正しいユーザー名とトークンを使用していると確信しています。何が起こっている ?

4

1 に答える 1

5

JSONP dataType でヘッダーを設定することはできません。JSONP リクエストは<script>、ターゲットの場所に設定された src を使用してドキュメントにタグを挿入することによって作成されます。タグを使用してヘッダーを渡すことはできないため、ヘッダーの設定は無視されます。

CORS と JSON を使用するか、データを取得するサーバー側のプロキシを使用します。

于 2013-02-21T16:18:17.687 に答える