首页 > 解决方案 > JavaScript fetch API 和 Python Flask 标头问题

问题描述

我正在尝试将 JSON 有效负载发布到运行在localhost:8080.

Javascript

    fetch(SERVER_URL, {
        method: 'POST',
        mode: 'no-cors',
        headers: {
            'Accept': 'application/json',
            'Content-Type': 'application/json'
        },
        body: JSON.stringify({"hello": "world"})
    });

我正在为我的服务器使用 Python Flask,我只想在服务器端打印接收到的 JSON。

蟒蛇烧瓶

from flask import Flask
from flask import request

app = Flask(__name__)

@app.route('/route', methods = ['POST'])
def routeHandler():
    data = request.get_json()
    print(data)
    return 'got it'

app.run(port = 8080)

打印语句被触发,但是dataNone. 阅读 Flask API 文档后,我知道原因之一dataNone请求中未设置正确的内容类型。为了检查这一点,我做了以下更改

 data = request.get_json(force = True)

它绕过is_json()检查并继续解析。这有效,表明我的标题有问题。但是,我确保我的fetch请求与 API 文档一致,所以我不确定我哪里出错了。

我已经从 Postman 发送了相同的请求,即使没有force = True. Postman 中生成的唯一标头是Content-Type: application/json.

感谢您的任何帮助。

标签: javascriptpythonflaskfetch-api

解决方案


我也有同样的挫败感,你的问题通过强制 get_json() 帮助解决了我的问题

我确实注意到我的实现和你的区别是:

from flask_cors import CORS
CORS(app)

https://flask-cors.readthedocs.io/en/latest/


推荐阅读