Ich habe versucht, eine Lösung dafür den ganzen Tag zu finden, aber kein Glück.Django und Internet Explorer Sitzung Verlust
Ich habe eine Django 1.9.4 Website, die für alle gängigen Browser außer IE funktioniert.
Ich verwende Eclipse, um die Django-Site lokal zum Testen auszuführen.
Wenn ich mich mit dem IE-11 auf dem lokalen Server in meiner Website anmelden, funktioniert es gut.
Wenn ich die Website auf eine Produktionseinheit (andere IP-Adresse, über ein Netzwerk) ziehen, IE scheint die Sitzung zu verlieren, und ich bin nur in einer Endlosschleife auf der Anmeldeseite.
Im Folgenden sind die zwei Funktionen, die ich glaube, in Zusammenhang mit diesem Problem stehen. „return Umleitung (“ myapp: Homepage „)“ geht auf eine Ansicht, die mit „@checkLogin“
applylogin und wann wird ausgeführt eingerichtet wird, um das Netzwerk mit IE Entwickler-Tool unter Cookies Überwachung Ich sehe folgende
Richtung Schlüssel Wert Verfällt Domain-Pfad Secure HTTP nur
Received sessionid pk5svspepe9xk3og6ctnrwqrc56ukgrh Mo 29-Aug-2016 15.39.03 GMT/Nein Ja
so scheint es, eine Session-ID erhalten zu haben.
@requires_csrf_token
def applylogin(request):
newUsername = ""
password = ""
err_username = False
err_pass=False
if(request.POST.has_key('username')):
newUsername=request.POST['username']
if(request.POST.has_key('password')):
password=request.POST['password']
try:
user = User.objects.get(username=newUsername)
if(user.check_password(password)):
request.session['login'] = newUsername
request.session['userid'] = user.id
request.session['useraccess'] = user.access
if user.access >= 255:
request.session['admin'] = True
else:
request.session['admin'] = False
return redirect("myapp:homepage")
else:
err_pass=True
except User.DoesNotExist as e:
err_username=True
logger.exception(e)
except Exception as e:
logger.exception(e)
build = getBuildType()
return render(request, "Redacted")
def checkLogin(fn):
def wrapped(request, *param, **dparam):
str_redirect = ""
str_loc = dparam.get('location', "xxxx")
if(str_loc == "xxxx"):
str_redirect = "xxxx:landingpage"
else:
str_redirect = str_loc+":login"
loginname = request.session.get("login", "")
try:
if loginname == "":
return redirect(str_redirect)
User.objects.get(username=loginname)
except User.DoesNotExist:
return redirect(str_redirect)
return fn(request, *param, **dparam)
return wrapped
Auch ich bin nicht sicher, ob dies etwas mit dem Thema zu tun hat, aber ich habe diese Nachricht in meiner Protokolldatei nur dann, wenn die Website mit IE Zugriff
> Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/gunicorn/workers/sync.py", line 66, in run_for_one
self.accept(listener)
File "/usr/local/lib/python2.7/dist-packages/gunicorn/workers/sync.py", line 27, in accept
client, addr = listener.accept()
File "/usr/lib/python2.7/socket.py", line 202, in accept
sock, addr = self._sock.accept()
error: [Errno 11] Resource temporarily unavailable
ich ratlos rechts am jetzt. Ich weiß nicht, ob es ein Django-Problem oder ein reines IE-Problem ist.
p.s. Ich habe das p3p-Zeug ausprobiert, aber das schien nicht zu funktionieren.