chrome 无法加载一些带有 ERR_INVALID_HTTP_RESPONSE 的脚本和样式表(对于 linux (debian) 上的 Flask 应用程序)

use*_*091 6 firefox google-chrome flask

我有一个在 Linux 上运行并在 Firefox 下正常工作的 Flask 应用程序。对于 chrome,只有禁用缓存才有效!?但我希望我的网站能够正常工作,而无需每个用户都必须禁用缓存。

模板 HTML 标头如下所示:

<!-- Bootstrap & CSS  -->
<link rel="stylesheet" type="text/css" href="/bootstrap/css/bootstrap.min.css">
<link rel="stylesheet" type="text/css" href="/fontawesome-free-6.1.1-web/css/all.min.css" >
<link rel="stylesheet" type="text/css" href="/css/app.css">

{% if css_file %}
<link rel="stylesheet" type="text/css" href="{{ css_file }}">
{% endif %}

<!-- JQuery -->
<link rel="stylesheet" type="text/css" href="/bootstrap/css/jquery-ui.css" >
<link rel="stylesheet" type="text/css" href="/bootstrap/css/jquery-ui.min.css" >
<script type="text/javascript" src="/bootstrap/js/jquery.js"></script>
<script type="text/javascript" src="/bootstrap/js/jquery-ui.min.js"></script>

<!-- Bootstrap JS -->
<script type="text/javascript" src="/bootstrap/js/bootstrap.min.js"></script>

<!-- local JS -->
<script type="text/javascript" src="/scripts/language.js"></script>
{% if js_file %}
<script type="text/javascript" src="{{ js_file }}"></script>
{% endif %}
Run Code Online (Sandbox Code Playgroud)

是的,所有文件都存在于静态文件夹中(因为它在 Firefox 中工作)并且 Flask 是这样启动的(这是默认设置):

# create and configure the app
app = Flask(__name__, static_url_path='', static_folder='static', template_folder='templates')
Run Code Online (Sandbox Code Playgroud)

Chrome(开发工具->网络): 在此输入图像描述

Chrome(开发工具->网络)(禁用缓存),Firefox 相同(启用缓存): 在此输入图像描述

有人可以给我一个关于如何进一步分析问题所在的提示吗?会不会和flask对于静态文件的响应有关?或者我的标题顺序错误?或者是脚本/样式表有问题,它们的配置是否错误?所以问题是如何在不禁用缓存的情况下修复 chrome 的这个问题。

不,我没有安装 Adblock 或类似的插件。

小智 1

我认为这个问题与 Chrome 有关,但我没有时间深入研究它。我的解决方法是包含no-storeCache-Control标题中:

@app.after_request
def add_header(response):
    response.headers['Cache-Control'] = 'no-cache, no-store'
Run Code Online (Sandbox Code Playgroud)