1

我正在尝试使用用于 iPad 的 grails 1.3.7 创建 Web 应用程序,并使用缓存清单离线保存数据。我的离线数据在 Chrome 中工作得很好,但在 Safari、iPad 和 Mozilla 中,它给出了一个错误,指出应用程序缓存清单的 MIME 类型不正确:text/plain. 我已将 mime 类型设置Config.groovy如下:

grails.mime.types = [ html: ['text/html','application/xhtml+xml'],
                      xml: ['text/xml', 'application/xml'],
                      text: 'text/plain',
                      js: 'text/javascript',
                      rss: 'application/rss+xml',
                      atom: 'application/atom+xml',    
                      css: 'text/css',
                      csv: 'text/csv',
                      all: '*/*',
                      json: ['application/json','text/json'],
                      form: 'application/x-www-form-urlencoded',
                      multipartForm: 'multipart/form-data',
                      manifest: 'text/cache-manifest' 
                    ]        

但是其他浏览器仍然不接受它。我真的很困惑这是一个 html5 问题还是 grails。它适用于铬。

4

2 回答 2

2

嘿,我得到了解决方案,我发现 grails 中没有设置 mime 类型...... .........要在 grails 中设置 mime 类型,我们必须创建一个 web.xml 并将以下代码添加到其中...

<mime-mapping>
    <extension>manifest</extension>
    <mime-type>text/cache-manifest</mime-type>
</mime-mapping>

但在 grails web.xml 仅在构建战争时创建....所以要创建一个可以与原始 web.xml 合并的 web.xml,请执行以下操作

在命令行类型中

grails install-templates

现在在您的项目文件夹中创建 src/templates/war。在war文件夹中创建web.xml并添加您需要的代码......希望这会有所帮助

于 2012-05-08T10:47:14.897 回答
0

除了修改web.xml文件,您还可以通过HTTPResponse对象直接从控制器操作中简单地设置 HTTP 内容类型标头:

response.contentType = "text/cache-manifest"

在内容协商期间使用阻塞grails.mime.types,以允许您更轻松地根据入站 Accepts 标头将不同的响应发送回请求。Config.groovy

于 2012-05-08T12:24:52.043 回答