我正在使用 Google App Engine 和 Python 2.7,并且我尝试使用 svg 文件作为 sprite 表。
由于某种原因,这在 Win7 和 Ubuntu 上运行良好,但在 Vista 或 Mac 上则不然(在每种情况下都使用最新的 Chrome 和 Firefox)。
这里它是用 mime 类型“application/octet-stream”发送的,浏览器会提示下载它,而不是显示它。
我尝试像这样覆盖 app.yaml 中的 mime 类型:
- url: /img/.*\.svg
static_dir: public/img
mime_type: image/svg+xml
- url: /img
static_dir: public/img
但这并没有改变任何事情。
我还尝试通过他们自己的 url 路由对 svg 文件的请求,如下所示
- url: /img/svg
static_dir: public/img
mime_type: image/svg+xml
- url: /img
static_dir: public/img
但这会导致文件以 mime 类型“img/png”发送,因此浏览器至少会尝试显示它,但不能。
为了确保,我尝试了所述的每种组合以及标题选项:
- url: /img/svg
static_dir: public/img
http_headers:
mime-type: image/svg+xml
没有成功。
请问有什么帮助吗?
[编辑]
经过更多测试,似乎在 Ubuntu 上使用本地应用程序启动器,它将 svg 发送为
text/html
,部署时它使用 application/octet-stream
,无论我在 app.yaml 中放入什么。
有人有这方面的经验吗?我解决这个问题的唯一方法是将 svg 代码直接插入页面中,这有点糟糕。这是一个图形,我想这样对待它。
[更多编辑]
最后,我将其放入 yaml 文件中,它似乎有效:
- url: /img/.*\.svg
static_dir: public/img
http_headers:
content_type: image/svg+xml
- url: /img
static_dir: public/img
尝试:
http_headers:
content-type: image/svg+xml
这有效。 我的 favicon.svg 在公共文件夹中。 然后我在我的index.html中列出了这样的:
<link rel="icon" type="image/svg+xml" href="./favicon.svg">
然后我将其添加到 yaml 文件中以专门识别 svg MIME 类型:
- url: /img/.*\.svg
static_files: dist/favicon.svg
upload: dist/favicon\.svg
secure: always
http_headers:
Content-Type: image/svg+xml