Grails 3 拦截器 - 无法在 'after' 方法中设置 cookie
Grails 3 interceptor - unable to set cookie in 'after' method
在我的 Grails 3.2 应用程序中,我发现 after
和 afterView
方法中设置的 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 容器的工作方式。
在我的 Grails 3.2 应用程序中,我发现 after
和 afterView
方法中设置的 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 容器的工作方式。