我正在尝试使用 AngularJS 向 Bottle 执行跨域 JSONP 请求,但出现错误。

Angular :

// this angular code is on localhost:8888, so it's cross domain

var URL = "http://localhost:8000/test";
    URL = $sce.trustAsResourceUrl(URL);

$http.jsonp(URL, {jsonpCallbackParam: 'callback'})
.then(function successCallback(response) {
    console.log(response);
}, function errorCallback(error) {
    console.log(error);
});

瓶子:
@route('/test')
def test():
    response.headers['Content-Type'] = 'application/json'
    return json.dumps({"random": "JSON"})

错误:
python - 对 Python Bottle 的跨域 Angular JSONP 请求-LMLPHP

最佳答案

您需要返回一个 JavaScript 应用程序(在本例中为包装函数)而不是一个 json 对象。该站点向您解释了 JSONP handling 的基础知识。

def jsonp(request, dictionary):
    if (request.query.callback):
        # wrap the dictionary in the callback parameter
        return "%s(%s)" % (request.query.callback, dictionary)
    return dictionary

@route('/test')
    if (request.query.callback):
        response.content_type = "application/javascript"
    return jsonp(dict(success="It worked"))

关于python - 对 Python Bottle 的跨域 Angular JSONP 请求,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42956645/

10-12 16:51