【问题标题】:Flask CORS triggers error after requestFlask CORS 请求后触发错误
【发布时间】:2018-11-02 08:26:50
【问题描述】:

我有一个使用 FlaskFlask-Restplus 构建的 API。我的文件api.py 包含以下内容:

from flask import Flask, request, Blueprint, abort, jsonify, url_for
from flask_cors import CORS
from flask_restplus import Resource, Api, fields
[...]

app = Flask(__name__)
CORS(app)

# Create blue print to indicate api base url
blueprint = Blueprint('api', __name__, url_prefix='/cs/api')
api = Api(
    blueprint,
    title='My API',
    version='v1',
    description='Some description',
    doc='/doc',
    contact='my@email.com')
Api.specs_url = specs_url
app.register_blueprint(blueprint)

# All endpoints are defined here and work fine
[...]

@app.after_request
def audit_trail(response):
    if request.method != 'OPTIONS':
        # Do stuff
        [...]
        print('Bye')
    return True

我的 API 过去可以正常工作,但由于我添加了 @app.after_request 块,Flask-CORS 包会为所有 http 请求触发以下错误消息:

如果 resp.headers.get(ACL_ORIGIN):

AttributeError: 'bool' 对象没有属性 'headers'

请参阅下面的跟踪:

Bye
[2018-05-23 19:03:00,468] ERROR in app: Exception on /cs/api/doc [GET]
Traceback (most recent call last):
  File "/home/alexis/Conda/envs/cs/lib/python3.5/site-packages/flask/app.py", line 1988, in wsgi_app
    response = self.full_dispatch_request()
  File "/home/alexis/Conda/envs/cs/lib/python3.5/site-packages/flask/app.py", line 1643, in full_dispatch_request
    response = self.process_response(response)
  File "/home/alexis/Conda/envs/cs/lib/python3.5/site-packages/flask/app.py", line 1862, in process_response
    response = handler(response)
  File "/home/alexis/Conda/envs/cs/lib/python3.5/site-packages/flask_cors/extension.py", line 167, in cors_after_request
    if resp.headers.get(ACL_ORIGIN):
AttributeError: 'bool' object has no attribute 'headers'

知道为什么以及如何解决它吗?

【问题讨论】:

  • 你应该发布audit_trail方法的完整代码
  • 感谢@MarkoPacak,您的评论帮助我解决了问题,因为audit_trail 方法返回了True,而它应该返回response 对象
  • 这正是我的想法。很高兴听到你自己做的

标签: python flask http-headers flask-cors


【解决方案1】:

问题是因为方法 audit_trail 返回 True 而它应该返回 response 对象。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-12-11
    • 2022-01-06
    • 1970-01-01
    • 2021-04-09
    • 2021-07-02
    • 2021-03-02
    • 2022-01-23
    相关资源
    最近更新 更多