python - 识别 Flask 请求是否来自 JavaScript

标签 python angularjs ajax flask

我想创建一个 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/

相关文章:

python - vscode 无法捕获 flake8 输出

python - statsmodels 马赛克图 - 如何排序类别

angularjs - 'drop' 事件监听器的 angular.bind() 行为不正常

javascript - 使用 ASP.NET MVC 项目运行脚本

javascript - 跨域-用javascript临时编辑页面

php - 在 Ajax 响应回调中获取 json

python - 将字节转换为位?

javascript - Angular 指令链接函数永远不会运行

javascript - 按值获取数组索引

python - Pandas 过滤数据框中的值