我们从静态资源提供一些网络字体(.woff),我想设置正确的mime类型(application/x-font-woff
)。我尝试在config/initializers/mime_types.rb
中执行此操作,但它没有效果:
Mime::Type.register "application/x-font-woff", :woff
返回的mime类型仍然保留application/octet-stream
。我甚至试图添加这一行(因为它是rails源中唯一可以找到字符串"woff"
的地方):
Rack::Mime::MIME_TYPES[".woff"] = "application/x-font-woff"
但它仍然无济于事。如何正确设置Web字体的mime类型?
答案 0 :(得分:12)
在Rack将其MIME类型列表修复为正确的woff
之前,临时黑客确实是您的config/initializers/mime_types.rb
行:
# tell Rack (and Sprockets) about modern font MIME types:
Rack::Mime::MIME_TYPES['.woff'] = 'application/x-font-woff'
要让它真正生效,您必须擦除tmp/cache
并重新启动服务器。
答案 1 :(得分:0)
虽然我也没有弄清楚它的一些黑客解决方案,但我几天前研究了这个(在运行WEBRick的我的rails 3.2 dev服务器上,供参考),它的Sprockets在响应上设置了错误的MIME类型,也许将选择委托给Rack,它对于字体传递的MIME类型有一个愚蠢的概念(截至this ravinggenious commit)。
我提交了一个(详细的)ticket on Sprockets和一个pull request on Rack,希望它能在最有意义的上游修复,但是还没有看到太多动作。我可能应该更加关注ttf和eof,但是已经很晚了,当时我没有想到它。
(评论两者都可能提高对这个问题的认识 - 一个问题没有问题,一堆人是一个值得修复的问题?: - )