我可以使用 JSONP 访问任何 API 还是 API 需要专门支持它?

Can I access any API with JSONP or does the API need to specifically support it?

我正在尝试从我的站点 foo.com 访问来自 bar.com 的 API。 Bar.com不允许CORS,我不知道他们是否正式支持JSONP。

我还能通过 JSONP(使用 jQuery)访问 API 还是该网站明确需要支持它?

注意,这是我的 AJAX 请求:

    $.ajax({
        url: 'https://api.example.com',
        jsonp: 'callback',
        dataType: 'jsonp',
        data: {
            'command' : 'abc',
            'partnerName' : 'def',
            'partnerPassword' : 'ghi',
            'partnerUserID' : 'jkl',
            'partnerUserSecret' : 'mnop'
        },
        error: function (response) {
            console.log(response);
            return false;
        },
        success: function (response) {
            console.log(response);
            return false;
        }
    });
},

从 Chrome 我得到:

Uncaught SyntaxError: Unexpected token :

这是因为 JSONP 所做的是尝试评估来自 API 端点的代码。

如果调用的结果是,假设

{"result": "OK"}

然后,为了使 JSONP 工作,服务器必须以这种方式响应它:

callback({"result": "OK"})

因为 oyu 在您的 ajax 调用中将 属性 jsonp 定义为 callback