簡體   English   中英

本地主機上的 Django SESSION_COOKIE_DOMAIN

[英]Django SESSION_COOKIE_DOMAIN on localhost

當我設置SESSION_COOKIE_DOMAIN = '.mysite.com'然后運行生產站點時,該站點會創建正確的跨域 cookie 並將其設置為.mysite.com 但是,如果我設置SESSION_COOKIE_DOMAIN = '.localhost'並在localhost:8000運行本地開發服務器,則創建的 cookie 是非跨域 cookie localhost

為什么會這樣?

謝謝。

這與瀏覽器和 cookies 的工作方式有關。 因為不允許將 cookies 設置為類似.com,所以也不能將其設置為 .localhost。

你可以在這里查看更多信息: https://code.djangoproject.com/ticket/10560 看起來 Django 中沒有真正的解決方案。 我確實希望他們會警告我們,而不是僅僅打破。

雖然我沒有很好的解決方案。 對於測試,您可以將主機文件設置為使用類似 test.com 而不是 localhost 來指向您的運行服務器。

對於開發服務器,您可以使用

SESSION_COOKIE_SECURE= False #default use just to override your prod setting
SESSION_COOKIE_DOMAIN= None  #default  use just to override your prod setting

或者您可以使用主機文件解析域名

 SESSION_COOKIE_DOMAIN= '.localhost'

或類似的東西

SESSION_COOKIE_SECURE= False
SESSION_COOKIE_DOMAIN=  "127.0.0.1"

由於瀏覽器的安全功能,您不能設置SESSION_COOKIE_DOMAIN = '.localhost' (參見Django 問題 10560

但是,如果你有foo.localhost:8000bar.localhost:8000你可以切換到foo.dev.localhost:8000bar.dev.localhost:8000並設置

SESSION_COOKIE_DOMAIN = '.dev.localhost'
SESSION_COOKIE_NAME = "youcustomcookiename"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM