我的应用程序使用子域(每个登录用户都有自己的:user.domain.com)和没有子域的蓝图。
到目前为止我还没有设置subdomain_matching并且我设置了 SERVER_NAME =“domain.com”和 SESSION_COOKIE_DOMAIN =“.domain.com”。
从 3.0.3 升级到 Flask 3.1.0 后,应用程序不再工作,并且请求的每个 url 都会出现 404 错误(但错误页面已正确加载)。
如果我从路由中删除“子域名”参数,则 www.domain.com 可以正常工作,但我无法获取 username.domain.com。
我在 Flask 文档“更改”部分中看到 3.1.0 中有关 SERVER_NAME 的内容发生了变化,但我无法理解,无论是阅读 #5553,必须如何设置此参数才能使子域正常工作。
解决方案似乎很简单:必须启用subdomain_matching。
app = Flask(__name__, subdomain_matching=True)
IMO 的问题是,目前 Flask 文档对此还不太清楚。
特别是文档引用:
SERVER_NAME “如果启用了 subdomain_matching,则必须设置,以便能够从请求中提取子域。”
但我找不到它明确指出从 3.1.0 开始单独设置 SERVER_NAME 不再激活 sudomain_matching 的地方。