无法在 PythonAnywhere 上获得烧瓶 python API 的请求 headers

Not able to get request headers for flask python API on PythonAnywhere

我已经在 PythonAnywhere 上部署了一个基于 python 应用程序的烧瓶。它包含一个 API 需要下面的请求 headers:

app_name: <app-name>

app_key: <app-key>

代码如下:

@app.route('/api/app/get_id', methods=['POST'])
def get_id():
    try:
        if 'app_name' and 'app_key' in request.headers:
            """
            SOME CODE
            """
        else:
            return jsonify({"status": "unauthorized", "error": "authentication parameters missing"}), 401
    except Exception as e:
        log.error("Exception occurred {}".format(e))

如您所见,它需要 app_nameapp_key。如果在 headers 中没有找到,那么 API 只是 returns 错误。我从邮递员那里调用这个 API 并包含 app_nameapp_key :

但它总是抛出 error authentication parameters missing。在我的本地测试中,它运行良好。我还尝试通过如下记录进行调试:

@app.route('/api/app/get_id', methods=['POST'])
def get_id():
    try:
        log.error(request.headers)   # <-- logging
        if 'app_name' and 'app_key' in request.headers:
            """
            SOME CODE
            """
        else:
            return jsonify({"status": "unauthorized", "error": "authentication parameters missing"}), 401
    except Exception as e:
        log.error("Exception occurred {}".format(e))

但是 app_nameapp_key 也没有出现在日志文件中。看起来由于某种原因 PythonAnywhere 不接受这些请求 headers。有谁知道问题是什么,我该如何解决。请帮忙。谢谢

'app_name' and 'app_key' 在 Python 中的计算结果为 True,因此您的 if 语句询问键 True 是否在 headers 中,而它可能不在。

尝试使用 if 'app_name' in request.headers and 'app_key' in request.headers'