在前後端分離專案中,後端django 登入**中使用session。
request.session['username'] = user_obj.username
request.session['user_id'] = user_obj.id
request.session['is_login'] = true
後端伺服器返回response header中有set-cookie屬性。瀏覽器接收到set-cookie屬性會自動把加入到cookie裡面。
當同一臺主機時,request header會攜帶cookie訪問api。但是跨域請求時(已經解決跨域問題corsheaders)set-cookie沒有生效,並且後續request header中也沒有攜帶cookie。嘗試修改以下跨域配置,依然沒有用。
# 跨域增加忽略
cors_allow_credentials = true # 指明在跨域訪問中,後端是否支援對cookie的操作
cors_origin_allow_all = true # 允許所有主機請求你的api
# cors_origin_whitelist = ( # 跨域請求白名單,為空時預設為全部
# '', '*'
# )
後來發現,samesite=lax這個會禁止跨域請求時攜帶cookie,然而我們是需要攜帶cookie的。所以只要修改django的配置,就可以啦。
# 會話cookie上samesite標誌的值。此標誌防止在跨站點請求中傳送cookie,從而防止csrf攻擊,並使某些竊取會話cookie的方法不可能實現。
session_cookie_samesite = none # response header set-cookie:samesite=lax default: 'lax'
csrf_cookie_samesite = none
此時,set-cookie中samesite=lax沒有了。前端就可以攜帶cookie跨域請求了。但是這樣做可能不安全。
跨域請求攜帶cookie
之前寫過乙個第三方登入的方案,就是利用tomcat session和cookie配合的方式來完成第三方跨域登入。在時間做的過程中碰到了乙個問題,就是在回寫瀏覽器的cookie時發現一直寫不進去,針對這個問題做了仔細的檢查,原來的採用ajax傳送跨域請求的時候預設是不會攜帶cookie的,如果需要允許...
django跨域請求
在介面函式中配置 安裝cors pip install django cors headers corsheaders 新增中介軟體 middleware or middleware classes on django 1.10 corsheaders.middleware.corsmiddlewa...
CORS 跨域攜帶 Cookie 傳送請求
當在 a.com 進行訪問時,如何向 b.com 攜帶 b.com 的 cookie 傳送乙個請求?a.com 是乙個第三方 需要通過訪問 b.com 的介面來獲取使用者的一些資訊。這時候,b.com 上的使用者已經登入了。我們知道,在傳送跨域請求時,需要後端設定一些請求頭,否則瀏覽器不會允許客戶端...