2016-10-26 15 views
0

В приложении Grails 3.2 я обнаружил, что файлы cookie, установленные в after и afterView, не установлены.Перехватчик Grails 3 - невозможно установить cookie в методе «после»

My (упрощенный) контроллер:

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 печенье возвращается в set-cookie заголовка ответа.

Не хватает ли каких-либо ограничений атрибута response в таких методах?

+0

«Я не вижу каких-либо ограничений атрибута ответа в таких методах?» - № –

+0

Значит, вы сказали бы, что это больше похоже на ошибку? – ilPittiz

ответ

2

Проблема заключается в том, что вызывается метод after*, контроллер или представление, возможно, уже записаны в ответ, чтобы ответ был исправлен, и слишком поздно добавлять заголовки или файлы cookie.

Это не ограничение Grails как такового, но только то, как работают контейнеры сервлетов.