2013-07-15 85 views
9

我的Rails应用程序因为ActionView::MissingTemplate-异常而抛出异常。这是因为请求有一个http标头ACCEPT,其值为: */*。该应用程序找不到这种格式的模板(这是我期望发生的)。用户代理被设置为Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.116 Safari/537.36Rails请求HTTP_ACCEPT标头的`:*/*`

我很好奇(也有点担心)这是什么意思。这是一个与轨道问题,我的应用程序的问题,或攻击媒介?我已经看到类似问题的答案(例如Ruby on Rails and strange HTTP_ACCEPT header from PSP),它们提出了解决这些异常问题的方法,并将答案设置为HTML格式。但是,在使用这种方法之前,我想现在如果: */*对于ACCEPT是可接受的值,并且哪个浏览器会这样设置它。

我在Rails 3.2.13上。

+0

嗨,我正在遇到生产应用程序相同的问题。我不断收到':*/*'accept头的请求。在我的errbit实例中,它显示了以下浏览器:** Chrome 27.0.1453.116 **(Mozilla/5.0(Windows NT 6.1; WOW64)AppleWebKit/537.36(KHTML,如Gecko)Chrome/27.0.1453.116 Safari/537.36) ** Internet Explorer 7.0 **(Mozilla/4.0(兼容; MSIE 7.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0)) ** Explore **(Explore 6.0)。你有没有找到任何解决方案? –

+1

我在rails问题跟踪器上问过(https://github.com/rails/rails/issues/11704),看起来这个头文件根据规范是无效的。您可以忽略这些无效的标题,或者使用中间件将其解救出来,并将格式设置为html。 – fabi

回答

4

这是一个已知的,古老的,错误在Rails的MIME类型解析器 - 见this bug report了解详情。解决方法存在,但修复将是可取的!

+0

谢谢,bug报告中有很多有趣的信息,以及一些可能的解决方法。我决定对此无能为力,因为它只发生过一次。 – fabi

+1

用'request.format =“html”'拯救是一个很好的解决方案 - 比显示错误页面更好! –

+1

我认为它已在最新的Rails中修复。 –

0

您可能在respond_to区块中有错误的订单,请尝试将第一个与模板一起添加。例如,如果你想html为默认:

respond_to do |format| 
    format.html 
    format.js 
end