我想创建一个 Flask 错误处理程序,如果请求来自 JavaScript,它返回一个 JSON 响应,否则返回一个重定向。我尝试使用 request.is_xhr
,但即使对于 JavaScript 请求也是错误的。如何检查请求是否来自 JavaScript?
@app.errorhandler(Exception)
def unhandled_exception(error):
if request.is_xhr:
return flask.jsonify(error='yes')
return redirect(url_for('error'))
最佳答案
没有标准或可靠的方法来检测请求是否来自特定来源,例如 JavaScript。
is_xhr
仅在某些 header 由某些 JavaScript 库(例如 jQuery)设置时才为真。大多数 JavaScript 不发送 header 。 is_xhr
由于这个原因已被弃用。
您可以检查 Accept
header 以查看客户端是否要求 application/json
,但这也是不可靠的。
if request.is_xhr or request.accept_mimetypes.accept_json:
return jsonify(...)
return redirect(...)
关于python - 识别 Flask 请求是否来自 JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43871003/