import Cookie class HttpOnlySessionCookie(object): def process_response(self, request, response): # Monkey patch the Cookie.Morsel class if needed if "httponly" not in Cookie.Morsel._reserved: Cookie.Morsel._reserved["httponly"] = "httponly" def output_string(self, attrs=None): result = [] RA = result.append RA("%s=%s" % (self.key, self.coded_value)) if attrs is None: attrs = self._reserved items = self.items() items.sort() for K,V in items: if V == "": continue if K not in attrs: continue if K == "expires" and type(V) == type(1): RA("%s=%s" % (self._reserved[K], _getdate(V))) elif K == "max-age" and type(V) == type(1): RA("%s=%d" % (self._reserved[K], V)) elif K == "secure": RA(str(self._reserved[K])) elif K == "httponly": RA(str(self._reserved[K])) else: RA("%s=%s" % (self._reserved[K], V)) return Cookie._semispacejoin(result) Cookie.Morsel.OutputString = output_string if response.cookies.has_key(settings.SESSION_COOKIE_NAME): response.cookies[settings.SESSION_COOKIE_NAME]['httponly'] = True return response