Django 1.9没有在具有Cordova 6.0.0的Android上设置登录响应的sessionid cookie

时间:2016-04-23 22:59:00

标签: android django cordova session cookies

我们的Android用户开始抱怨每次杀死我们的应用时,他们都必须重新登录。我可以在我们的Android设备上重现这一点,但不能在我们的iOS设备上重现,不能通过任何设备上的移动网站重现,也不能通过我们的桌面网站重现。

当我将Chrome调试器附加到在Android上运行的Cordova应用程序时,看起来Django无法在登录响应路径上设置sessionid cookie。在我查看该端点的响应时,在其他平台上(包括Android上的直接Chrome),会话cookie就在那里。

以下是除Cordova Android之外的每个浏览器中的正常登录响应。注意sessionid cookie的设置:

Response Headers
    Connection:keep-alive
    Content-Encoding:gzip
    Content-Length:654
    Content-Type:application/json; charset=utf-8
    Date:Sat, 23 Apr 2016 22:33:44 GMT
    ETag:"11186a50be09093d01d4e82ff4d9d3e5;gzip"
    Server:nginx/1.8.1
    Set-Cookie:sessionid=25a9wodafd4zh8w0lzpklf8lnc7mxwbm; expires=Sat, 07-May-2016 22:33:44 GMT; Max-Age=1209600; Path=/
    Vary:Cookie, Accept-Encoding
    X-Frame-Options:DENY
    X-Handled-By:127.0.0.1:8000

以下是我通过Cordova应用程序在Android中获得的响应:

Response Headers
    Connection:keep-alive
    Content-Encoding:gzip
    Content-Length:654
    Content-Type:application/json; charset=utf-8
    Date:Sat, 23 Apr 2016 22:52:23 GMT
    ETag:"11186a50be09093d01d4e82ff4d9d3e5;gzip"
    Server:nginx/1.8.1
    Vary:Cookie, Accept-Encoding
    X-Frame-Options:DENY
    X-Handled-By:127.0.0.1:8000

请求成功,用户以某种方式进行会话并可以进行购买。他们可以对应用程序进行后台处理并将其启动,并且他们的会话仍在那里,但是如果他们杀死应用程序并将其恢复,则会丢失会话。

当我将Safari Web调试器连接到我们的iOS Cordova应用程序时,登录响应看起来不错。 sessionid cookie出现在响应头中,一切正常。

我希望这个整个过程有一些显而易见的东西我不知道。

0 个答案:

没有答案