2012-05-02 64 views
1

我正在尝试使用grails 1.3.7 for iPad使用缓存清单来离线保存数据来创建Web应用程序。我在Chrome浏览器中使用了非常好的离线数据,但在Safari,iPad和Mozilla中,它提供的错误表明应用程序缓存清单的MIME类型不正确:text/plainHTML5中的MIME类型错误

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' 
        ]   

不过还是其他浏览器不接受它:我在Config.groovy如下设置MIME类型。我很困惑这是一个html5问题还是grails。它在铬中工作。

+0

您是否在镀铬中使用了检查器来确认正在发送正确的MIME类型标题? – robertc

+0

是的我在Chrome浏览器中看到每件事情都在Chrome中正常工作........在Chrome缓存中显示每个satuts – sairam

+0

您已经说过在Chrome中一切工作正常,我没有询问缓存状态,我问你是否查看了响应中的标题以确认正确的响应正在发送 – robertc

回答

2

嘿,我得到了解决方案,我发现MIME类型没有在grails中设置....在grails中设置MIME类型的另一种方式是以下(但我仍然想知道为什么铬没有mime类型工作)............要设置MIME类型,我们必须创建一个web.xml和下面的代码添加到它的Grails ...

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

但Grails的。 xml仅在创建战争时创建....因此要创建可以与原始web.xml合并的web.xml,请执行以下操作:

在命令行中键入

grails install-templates 

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

+0

fyi:[推荐](http://www.w3schools.com/html/html5_app_cache.asp)扩展名为清单文件是“.appcache”而不是“.manifest”。 – Khon

0

而不是修改web.xml文件,您还可以直接从您的控制器操作直接设置HTTP内容类型标题HTTPResponse对象:

response.contentType = "text/cache-manifest" 

Config.groovygrails.mime.types块期间content negotiation用于允许你更容易地发送回不同的响应基于所述入站的请求接受报头。