[英]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:8000
和bar.localhost:8000
你可以切換到foo.dev.localhost:8000
和bar.dev.localhost:8000
並設置
SESSION_COOKIE_DOMAIN = '.dev.localhost'
SESSION_COOKIE_NAME = "youcustomcookiename"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.