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 异常的问题。