Django 跨域請求時不攜帶cookie

2021-10-03 11:12:13 字數 1202 閱讀 6819

在前後端分離專案中,後端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 上的使用者已經登入了。我們知道,在傳送跨域請求時,需要後端設定一些請求頭,否則瀏覽器不會允許客戶端...