【问题标题】:Not able to get request headers for flask python API on PythonAnywhere无法在 PythonAnywhere 上获取烧瓶 python API 的请求标头
【发布时间】:2020-08-09 20:28:24
【问题描述】:

我在PythonAnywhere 上部署了一个基于flask 的python 应用程序。它包含一个需要以下请求标头的 API:

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。如果在标头中未找到,则 API 仅返回错误。我从邮递员那里调用这个 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 不接受这些请求标头。有谁知道问题是什么,我该如何解决。请帮忙。谢谢

【问题讨论】:

    标签: python flask python-requests http-headers pythonanywhere


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-07
      • 1970-01-01
      • 2021-12-30
      • 2014-07-23
      • 1970-01-01
      • 2019-08-19
      • 2022-09-30
      • 1970-01-01
      相关资源
      最近更新 更多