En Pyramid, usando Beaker para sesiones, ¿cómo puedo hacerla para que ciertas respuestas no incluyan cookies?
Actualmente, si me curvo cualquier URL en mi aplicación, recuperaré algo como:
HTTP/1.1 200 OK
Server: nginx/1.2.6
Date: Thu, 07 Nov 2013 02:14:45 GMT
Content-Type: application/json; charset=UTF-8
Content-Length: 776
Connection: keep-alive
Set-Cookie: beaker.session.id=0a6d945c09884ca29d73bc4ff4d09ff0; expires=Thu, 07-Nov-2013 03:14:45 GMT; httponly; Path=/; secure
No necesito que esa cookie se establezca con todas las solicitudes. Por ejemplo, me gustaría eliminarlo de las solicitudes que tienen el subdominio "API". Intenté cambiar:
def main(global_config, **settings):
session_factory = session_factory_from_settings(settings)
config = Configurator(settings=settings, root_factory=get_root)
config.set_session_factory(session_factory)
return config.make_wsgi_app()
a:
def main(global_config, **settings):
session_factory = session_factory_from_settings(settings)
config = Configurator(settings=settings, root_factory=get_root)
#config.set_session_factory(session_factory)
return MethodOverride(config, session_factory)
class MethodOverride(object):
def __init__(self, config, session_factory):
import copy
self.config = copy.deepcopy(config)
config.set_session_factory(session_factory)
self.application = config.make_wsgi_app()
def __call__(self, environ, start_response):
if "api" == environ['HTTP_HOST'].split('.')[0]:
self.application = self.config.make_wsgi_app()
Lo que pensé que lo haría para que la fábrica de sesiones no se estableciera en esos casos y, por lo tanto, no hubiera cookies. No entiendo lo que está pasando con el middleware lo suficientemente bien. También estaría bien descubrir una manera de hacerlo para que los objetos de respuesta que tengan un mimetipo "Aplicación/JSON" no incluyan esa cookie. Cualquier ayuda sería muy apreciada.