URI中不允许使用“.xml”/“。html”/“index”吗?

时间:2013-05-19 21:38:32

标签: request httprequest lift

我正在Section 3.2 SiteMap of Simply Lift浏览Lift的基础知识,有一件事让我感到震惊。

使用默认的SiteMap代码,您可以用三种方式询问info视图:

  • GET /info
  • GET /info.html
  • GET /info.xml(为什么?)。

此外,您可以通过四种不同的方式请求index观看次数:

  • GET /
  • GET /index
  • GET /index.html
  • GET /index.xml

如何将此行为限制为GET /目录和GET /info文件?


P.S。所有这些都会返回200 OK

一个资源不应只有一个网址吗?

2 个答案:

答案 0 :(得分:3)

实际上有四种方法可以解析。可以找到已知后缀的完整列表(其中任何一个都可用于访问该页面)here

我认为原因是可以使用lift来为任何资源提供服务,因此大多数都是默认显式添加的。

我认为您可以通过将此添加到Boot.scala

来禁用Lift对所有扩展程序的处理
LiftRules.explicitlyParsedSuffixes = Nil

但是,我不建议这样做,因为可能会有一些副作用。

ReqRestHelper一起使用,您可以明确指定后缀,但我不知道是否有这样的构造可以使用Sitemap

答案 1 :(得分:2)

实际上,确定Lift是否应处理请求的代码是here。您可以在上面的liftHandled方法中看到默认扩展名,但可以使用LiftRules.liftRequest覆盖这些扩展名。类似的东西:

LiftRules.liftRequest append {
  case r => Full(r.path.suffix.trim == "")
}

应该做的伎俩。

至于为什么它以这种方式工作,Jason是正确的,Lift旨在处理多种类型的动态资源。