【问题标题】:Getting a 405 GET error when using json POST to Flask Server使用 json POST 到 Flask Server 时出现 405 GET 错误
【发布时间】:2017-08-02 23:15:19
【问题描述】:

我正在尝试使用 json 将一些数据发送到 Flask 应用程序。当我发送它时,我在控制台中收到一个 GET 错误

GET http://super.secret.url/csv?callback=jQuery...

Javascript:

$.ajax({
    type: 'POST',
    contentType: "application/json; charset=utf-8",
    url: "http://super.secret.url/csv?callback=?",
    data: JSON.stringify({message: id, condition: "new"}),
    dataType: "json"
});

烧瓶(python):

@app.route('/csv', methods=['POST'])
@crossdomain(origin='*')
def edit_csv(path):
    ip = request.remote_addr
    sessionId = request.json['message']
    type = request.json['condition']

    csvFile = csv.reader(open('ip_log.csv'))
    csvLines = [l for l in csvFile]



    if(type == "new"):
        for i in range(0, len(csvLines)):
            if(csvLines[i][0] == ip):
                csvLines[i][1] == sessionId
                break


    csvwriter = csv.writer(open('ip_log.csv', 'w'))
    csvwriter.writerows(csvLines)

    return ""

编辑

我收到 405。我知道这是一个跨域请求,但我确实有服务器设置来处理它。我在跨域工作的 python 文件中有一个不同的函数。

【问题讨论】:

    标签: javascript python json ajax flask


    【解决方案1】:

    为了解决跨域问题,您可以尝试使用 JSONP 而不是 JSON。 比如ajax代码给出如下:

    $.ajax({
        type: 'POST',
        dataType: 'jsonp'
        url: "http://super.secret.url/csv?callback=?", 
        jsonp: 'callback'//to get your own callback function name
        jsonpCallback:'youOwnFunction',//'youOwnFunction' is callback function
        //success or error function
    });
    

    返回数据显示是这样的

    youOwnFunction({
    //return data
    });
    

    【讨论】:

    • 是否可以使用 jsonp 进行 POST。这篇文章说不:stackoverflow.com/questions/35477537/…
    • 高版本jQuery会将'POST'转为'GET'获取数据,如果你坚持真正的'POST',你可以选择其他替代方式。
    猜你喜欢
    • 2021-10-16
    • 2016-10-16
    • 2012-08-24
    • 1970-01-01
    • 1970-01-01
    • 2017-11-20
    • 2017-09-09
    • 1970-01-01
    • 2013-11-04
    相关资源
    最近更新 更多