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
我在一台机器上托管一个 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