我们有一个使用 HttpKit 服务请求的 Web 应用程序和一个用 Ring 中间件包装的处理程序。
处理程序类似于:
(def handler
(-> #'req-handler
(wrap-defaults site-defaults)
(wrap-content-type-and-encoding)
(wrap-cookies)
(wrap-stacktrace)))
在 site-defaults 中可以找到:
:security { ...
:anti-forgery anti-forgery-setting
... }
该应用程序过去只处理来自浏览器的请求,但现在一些端点响应 API 请求,包括 POST 操作。
在我可以阅读的文档中:
此中间件将阻止除 GET 和 HEAD 之外的所有 HTTP 方法在没有有效防伪令牌的情况下访问您的处理程序。
因此,您应该只将此中间件应用于旨在通过 Web 浏览器访问的应用程序部分。此中间件不应应用于定义 Web 服务的处理程序。
有没有办法有条件地应用防伪设置,或者site-defaults
根据请求提供不同版本的防伪设置?