On Sat, Mar 15, 2014 at 04:55:17PM +0100, Enrico Zini wrote: > I tried JavaScript code like this to speed up multi-federation logout, > but it fails because dacs_signout does not set CORS headers:
This is a tested alternative script to dacs_signout that can perform logout over AJAX: #!/usr/bin/python from __future__ import print_function from __future__ import absolute_import from __future__ import division from __future__ import unicode_literals import os import re import sys origin = os.environ.get("HTTP_ORIGIN", None) if origin not in ["https://www.example.org", "http://www.example.com"]: origin = None try: cookie_names = [] re_find_cookies = re.compile(r"(?P<key>[^ =]+)=(?P<value>[^;]+)\s*") for mo in re_find_cookies.finditer(os.environ.get("HTTP_COOKIE", "")): key = mo.group("key") if not key.startswith("DACS"): continue cookie_names.append(key) except Exception as e: print("Status: 500") print("Content-Type: text/plain") print("Access-Control-Allow-Origin: " + origin) print() print(e) sys.exit(0) print("Status: 200") if origin is not None: print("Access-Control-Allow-Origin: " + origin) print("Access-Control-Allow-Credentials: true") for key in cookie_names: print("Set-Cookie: {}=deleted; path=/; expires=Thu, 01-Jan-1970 00:00:01 GMT;".format(key)) print() if cookie_names: print("logged out.") else: print("not previously logged in.") sys.exit(0) Ciao, Enrico -- GPG key: 4096R/E7AD5568 2009-05-08 Enrico Zini <enr...@enricozini.org>
signature.asc
Description: Digital signature