Django設置的cookie vue js無法獲取cookie內容


 參考:禁止js獲取sessionid

瀏覽器--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

 

 

 

其他參考:

js-cookie https://github.com/js-cookie/js-cookie

Session Cookie的HttpOnly和secure屬性

https://security.stackexchange.com/questions/186441/any-reason-not-to-set-all-cookies-to-use-httponly-and-secure

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM