如何为 HEAD 请求定义 Rails 路由
Posted
技术标签:
【中文标题】如何为 HEAD 请求定义 Rails 路由【英文标题】:How to define Rails route for a HEAD request 【发布时间】:2021-12-17 09:44:45 【问题描述】:我刚开始在我的日志中出现错误:
ActionController::RoutingError: No route matches [HEAD] "/auth/cas"
“/auth/cas”肯定有一条路由(虽然它被埋在 gem 中),但不是 HEAD 请求。这些错误与 UptimeRobot.com 访问我的服务器相吻合,但似乎他们刚刚开始使用 HEAD 请求,因为我最初设置我的帐户时没有收到这些请求。
由于我无法更改 UptimeRobot 的工作方式,并且我不想找到其他服务,我如何创建一个路由来处理此请求或以其他方式使其消失?
Rails 路由指南中没有关于如何处理 HEAD 请求的内容。
【问题讨论】:
只需使用另一个路由/URL 来监控正常运行时间。一个在你的控制之下,而不是“埋在宝石中”。 正常运行时间监视器被重定向到身份验证页面,并且(显然)不是获取它,而是首先对其进行 HEADing。所有 URL 都需要身份验证。我想创建一个不需要身份验证但决定的权力不值得我花时间的“心跳”页面——即使你和我知道这时间很短,对他们来说听起来工作量太大了,他们想要 FEATURES DAMMIT——所以我正在寻找更快的解决方案。 【参考方案1】:Rails 没有内置 head
routing helper。但是你可以定义一个路由来匹配任何可以想象到的 HTTP 方法与他们在掩护下使用的match
method:
match "/auth/cas", to: "foos#bar", via: :head
【讨论】:
添加head
和 options
会是一个不错的 PR。以上是关于如何为 HEAD 请求定义 Rails 路由的主要内容,如果未能解决你的问题,请参考以下文章
Rails:如何为 Rails activerecord 模型中的属性创建默认值? [复制]
如何为快捷方式应用自定义 SiriKit 意图扩展以请求允许访问?