2016-10-26 71 views
0

在我的Grails 3.2應用程序中,我發現在afterafterView方法中未設置cookie。Grails 3攔截器 - 無法在'after'方法中設置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 
    } 
} 

只有before cookie被在set-cookie響應頭返回。

我在這種方法中缺少response屬性的任何種限制嗎?

+0

「我是否在這些方法中缺少響應屬性的任何限制?」 - 第 –

+0

所以你會說它更像是一個錯誤? – ilPittiz

回答

2

問題是當調用after*方法時,控制器或視圖可能已經寫入響應,使得響應已被提交,並且添加任何標頭或cookie爲時已晚。

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