我一直在试图找到一个整天的修复,但没有运气。Django和Internet Explorer会话丢失
我有一个Django 1.9.4网站,适用于除IE以外的所有主流浏览器。
我使用eclipse在本地运行Django站点进行测试。
当我使用本地服务器上的IE-11登录我的站点时,它工作得很好。
当我将站点拖到生产单元(不同的IP地址,通过网络)时,IE似乎失去了会话,并且我只是在登录页面处于无限循环。
下面是我相信这个问题的两个功能。 “返回重定向(” MYAPP:主页“)”去装饰有“@checkLogin”
applylogin获取运行下的cookies我看到监控与IE开发工具的网络时,以下
视图方向键值到期域路径安全HTTP只
收到的SessionID pk5svspepe9xk3og6ctnrwqrc56ukgrh周一,8月29日-2016 15时39分03秒GMT /否是
所以它似乎已经接收到会话ID。
@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
另外,我不能确定这是否有什么关系的问题,但我在日志文件中得到这个消息访问与IE
我很茫然右侧的网站> 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
只有当现在。 我不知道它是Django问题还是纯粹的IE问题。
p.s.我已经尝试了p3p的东西,但似乎没有工作。