JS 代码中的链接不以 SCRIPT_NAME gunicorn 为前缀

Links inside JS code not prefixed with SCRIPT_NAME gunicorn

我在一台机器上托管一个 Flask 应用程序,在不同的端口上有不同的 Flask 应用程序。在它们前面有 nginx,它充当反向代理,以便根据 url 前缀将请求重定向到正确的端口(即应用程序)。 因此,例如所有对 my_ip/app1/.. 的请求都被重定向到 my_ip:port1 等等。 我的烧瓶应用程序是 运行 通过 gunicorn。 我已将 SCRIPT_NAME 变量设置为 app1,应用程序内的所有链接都是相对链接,它们不包含前缀 app1,但这是自动添加的他们工作得很好。

问题是我通过 jquery 发出的 get 和 post ajax 请求不会发生这种情况。 最初这些请求中的 url 只是相对路径,例如 distribution?a=1..,然后我将它们替换为 {{ url_for('distribution') }}?a=1..,但没有任何改变。 我不明白为什么 url_for 将前缀添加到头部的 css 和 js 文件的链接,而不是 js 代码中的这些链接。 我希望有比对前缀进行硬编码更好的方法,这会降低代码的可移植性

最后的解决方案很简单,只需要使用url_for('main.get_distribution'),所以指定与路由关联的函数的名称。 这样 SCRIPT_NAME 前缀正确地添加到 url