Flask报506 Variant Also Negotiates 异常的原因以及解决办法

  • Post category:Python

Flask框架报 506 Variant Also Negotiates 异常的原因是因为请求的URL对应的资源有多种格式可供返回,但浏览器请求时没有指定具体的格式,导致服务器无法确定返回哪种格式的资源。

解决办法有两种:

1.在响应头中指定返回的格式

可以在响应头部添加一个 “Content-Type” 属性,值为需要返回的资源的格式,如下所示:

@app.route("/path")
def func_name():
    return Response("Hello, Flask!", content_type='text/html')

这样的话,无论浏览器的默认格式如何,都会以 HTML 格式的形式返回。

2.错误页面处理

可以使用 Flask 提供的错误处理函数,将出现 Variant Also Negotiates 异常的情况处理成其他适合的异常,如 Not Found(404)、Internal Server Error(500)等。具体代码如下:

@app.errorhandler(506)
def handle_506(error):
    return "Invalid format", 40

以上代码表示,当出现 506 异常时,返回 “Invalid format” 和 404 错误页面,提示用户请求的资源格式不正确。

通过以上两种方式可以解决 Flaks 框架报 506 Variant Also Negotiates 异常的问题。