Grails 3 拦截器 - 无法在 'after' 方法中设置 cookie

Grails 3 interceptor - unable to set cookie in 'after' method

在我的 Grails 3.2 应用程序中,我发现 afterafterView 方法中设置的 cookie 没有设置。

我的(简化)控制器:

class MyInterceptor {

    boolean before() {
        Cookie c = new Cookie('before', 'ok')
        response.addCookie c
        true
    }

    boolean after() {
        Cookie c = new Cookie('after', 'ok')
        response.addCookie c
        true
    }

    void afterView() {
        Cookie c = new Cookie('afterview', 'ok')
        response.addCookie c
    }
}

set-cookie 响应中仅返回 before cookie header。

我是否遗漏了此类方法中 response 属性的任何类型的限制?

问题是当调用 after* 方法时,控制器或视图可能已经写入响应,因此响应已经提交,现在添加任何 headers 或饼干。

这不是 Grails 本身的限制,而是 servlet 容器的工作方式。