瀏覽器--Application--Cookies查看如下圖所示
但是通過有js-cookie的Cookie.get()方法獲取不到上面的sessionid(登錄憑證),如下所示
原因參考:https://codeday.me/bug/20190328/843773.html
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_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
其他參考:
js-cookie https://github.com/js-cookie/js-cookie