金字塔为静态资产返回错误的Content-Type HTTP标头

时间:2012-12-06 06:05:32

标签: python mod-wsgi wsgi pyramid

到目前为止,我一直在使用Pyramid从python包中的文件夹中提供静态资源,如文档中所述:

config.add_static_view('static', 'myapp:static')

从模板加载它们如下:

<script type="text/javascript" src="{{ request.application_url }}/static/js/jquery-1.7.1.min.js"></script>

但是,我注意到Chrome会发出如下警告:

Resource interpreted as Stylesheet but transferred with MIME type apache/2.2.14: "http://mydomain.com/static/js/jquery-1.7.1.min.js"

Resource interpreted as Stylesheet but transferred with MIME type text/plain: "http://mydomain.com/static/js/jquery-1.7.1.min.js"

在硬刷新时会发生这种情况,并且<head>中加载的3-4个 随机 资源似乎提供了错误的内容类型标题(根据Pyramid文档,标题由文件扩展名决定)。

我没有能够推断出如何设置错误标头的模式。有时,javascript / CSS文件为text/plain,有时它是/static/js/something.js之类的路径(此路径与请求URL无关),有时它是{的值{ {1}}标题,与上面Server一样。

这是一个很大的问题,因为当返回带有错误Content-Type的CSS时,它不会被渲染,这会破坏整个页面。我通过使用Apache捕获apache/2.2.14请求并使用它来提供静态资产,同时让所有其他请求都通过金字塔来解决这个问题。我不再在Chrome中看到错误的MIME类型警告。但是,我想知道是否有人遇到过这个问题,是否是金字塔错误,或者我是否在做其他错误。

编辑:我忘了提供有关如何部署应用的规范。生产服务器运行Apache 2.2,应用程序在mod_wsgi下运行。我遵循的过程几乎是本教程中逐字描述的:http://docs.pylonsproject.org/projects/pyramid/en/1.0-branch/tutorials/modwsgi/index.html重要:只有在通过mod_wsgi在Apache上运行时才会出现此问题。当我在服务员上本地运行应用程序时,Content-Type标题始终是正确的。

0 个答案:

没有答案