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 <[email protected]>
signature.asc
Description: Digital signature

