Ошибка при попытке добавить заголовок с помощью Set-Cookie в GAE - PullRequest
3 голосов
/ 25 февраля 2011

Я пытаюсь включить в свой проект внешний модуль python для работы с сессиями.Он называется gmemsess.py.Он пытается добавить заголовок Set-Cookie в ответ, и появляется ошибка:

rh.response.headers.add_header('Set-Cookie','%s=%s; path=/;'%(name,self._sid))
AttributeError: HeaderDict instance has no attribute 'add_header'

Я читаю документацию, и все кажется нормальным, но это не работает.Почему эта ошибка может появиться?Также я использую webapp2 для управления поддоменами.Может быть, из-за этого что-то идет не так?

Ответы [ 2 ]

5 голосов
/ 25 февраля 2011

Метод headers.add_header должен работать абсолютно, если вы используете стандартный AppEngine, но я предполагаю, что вы используете фреймворк - а их много, например Bottle - который использует пользовательскую замену для webob's Response object.

Немного времени, проведенного с Google, показывает, что существует по крайней мере один идентифицируемый класс HeaderDict, который расширяет MultiDict, и я думаю, что это то, с чем вы имеете дело.В этом случае вам следует перейти на gmemsess.py и изменить строку

rh.response.headers.add_header('Set-Cookie','%s=%s; path=/;'%(name,self._sid))

на

rh.response.headers['Set-Cookie'] = '%s=%s; path=/;'%(name,self._sid)

Это должно исправить вас.

3 голосов
/ 25 февраля 2011

Не обращать внимания - см. Комментарии ниже

Этот модуль написан для работы с App Engine? Объекты ответа, используемые App Engine, не имеют метода add_header, см. Документы .

Вместо этого есть объект в стиле dict headers, которому вы можете просто присвоить значения как

response.headers['Set-Cookie'] = "whatever your cookie value is"
...