孤鸿& 2021-06-09 14:00 采纳率: 100%
浏览 264
已结题

Django能正常登录,但是浏览器获取不到cookie。

 

 Django==2.2.19  +uwsgi+nginx+vue+Goole90.x   

这是settings里面的设置。

 

 

 

 

 

  • 写回答

1条回答 默认 最新

  • 小P聊技术 2021-06-09 16:24
    关注

    浏览器--Application--Cookies查看如下图所示

    但是通过有js-cookie的Cookie.get()方法获取不到上面的sessionid(登录凭证),如下所示

    原因参考:https://codeday.me/bug/20190328/843773.html

    我尝试使用几种机制,包括jquery cookie插件.当我尝试读取这个cookie时,我总是得到一个空的结果. Chrome的开发者控制台显示确实设置了sessionid cookie.但是,该cookie的HTTP列有一个复选标记,与其他cookie不同.我正在开发我的本地主机,如果这有所作为.

    最佳答案

    这是一个仅限HTTP的cookie;它们无法被JavaScript读取.

     

    http://en.wikipedia.org/wiki/HTTP_cookie#Secure_and_HttpOnly

    有关会话的文档中对此进行了解释:

    https://docs.djangoproject.com/en/dev/topics/http/sessions/#using-cookie-based-sessions

    可以通过将SESSION_COOKIE_HTTPONLY设置为false来更改行为(但不建议这样做;请参阅上面的链接).

     

    这个是django的一个默认设置,防止js读取cookie,避免xss攻击,详见 https://docs.djangoproject.com/en/2.2/ref/settings/#session-cookie-httponly

    但是这个参数是一个全局的配置,如果在单独的cookie上设置这个参数为False呢?可以通过HttpResponse.set_cookie 参考如下

    原文:https://blog.csdn.net/iteye_18800/article/details/82437116

    不知道你是不是用set_cookie这个函数设置了cookie呢?
    HttpResponse.set_cookie(key, value='', max_age=None, expires=None, path='/', domain=None, secure=None, httponly=True)
    这个函数里面,max_age就是cookie的超时时间,是以秒为单位的。
    也可以用expires设置绝对时间做为有效期,格式:"Wdy, DD-Mon-YY HH:MM:SS GMT",expires也可以是datetime.datetime的对象

    追问

    我确实是用set_cookies这个函数的,我是直接写的如 set_cookies['username',username]这样写的。

    回答

    加上上面说的两个参数试试看。
    set_cookies('username',username, 30) 

    追问

    可以的,谢谢。-1应该是代表永久的吧。 

    from django.shortcuts import render_to_response, get_object_or_404
    from django.template import RequestContext
    from django import http
    from django.http import HttpResponse 

    def main(request, template_name='index.html'):
    context ={
    'a':a,
    'cookie':request.COOKIES.get('logged_in_status') ,
    }

    response = render_to_response(template_name, context)
    response.set_cookie('logged_in_status', 'zjm1126')
    return response

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 10月23日
  • 已采纳回答 10月15日

悬赏问题

  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效