【问题标题】:Grails WEB-INF accessible from Deployed app可从已部署应用程序访问的 Grails WEB-INF
【发布时间】:2014-03-14 15:46:22
【问题描述】:

在 grails 应用程序中,可以访问 WEB-INF 内容,包括所有 .gsp 内容以及部署时的 .class 文件。

我正在使用 grails 2.3.5 并在 tomcat 7 中部署战争。

您可以使用

访问文件

http://mydomain.com/static/WEB-INF/web.xml
http://mydomain.com/static/WEB-INF/grails-app/views/anyview.gsp
http://mydomain.com/static/WEB-INF/grails-app/i18n/messages.properties http://mydomain.com/static/WEB-INF/classes/anyclass.class

我可以在 grails 中禁用对这些 url 的访问吗?

【问题讨论】:

  • 您的 /static URL 映射是什么?这应该是固定的。
  • 您的意思是在 UrlMappings.groovy 上?我试过把"/static/WEB-INF/**"(view:"/error"),但是结果是一样的
  • 任何 servlet 容器都不应该让您看到 WEB-INF 下文件的内容。你用的是什么服务器?
  • 我正在使用 grails build ":tomcat:7.0.50" 提供的默认插件。同样在生产环境部署tomcat 7.0.39也有同样的问题
  • 我怀疑你的 web.xml 中有 /static 映射。请检查。

标签: java tomcat grails web-inf


【解决方案1】:

grails 默认有资源插件。它映射了所有资源,如 css、js、图像、WEB-INF、插件和 META-INF,当您提取 war 文件时会发现这些资源。

您需要在 config.groovy 中包含以下行,以便在静态资源中仅包含 css、js 和图像。

grails.resources.adhoc.includes = ['/images/**','/js/**','/css/**']

你也可以使用:

grails.resources.adhoc.excludes = ['/WEB-INF/**']

仅排除 WEB-INF。

我不知道我应该说是为了了解更多信息还是只是为了了解信息。无论如何,你也可以在documentation of resources plugin in configuration part 中找到这方面的一些信息,其中有标题

控制即席过滤器的包含和排除:grails.resources.adhoc.includes/excludes

【讨论】:

    猜你喜欢
    • 2020-06-24
    • 1970-01-01
    • 2020-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-21
    • 2022-01-10
    • 1970-01-01
    相关资源
    最近更新 更多