3 回答

TA貢獻1811條經驗 獲得超5個贊
這與 CORS 無關。這就是 cookie 的工作原理。
標頭中的域set-cookie表示http://localhost:3000,但請求是針對http://localhost:5000.
那是不同的來源,無效的 cookie 也是如此。
來自一個來源的標頭不可能為set-cookie不同的來源設置 cookie。http://localhost:5000只能為http://localhost:5000.
如果你真的想設置一個cookie,:3000那么解決方法是通過cookie以外的其他格式提供數據(例如在請求正文中),然后讓客戶端JS使用文檔http://localhost:3000設置cookie 。餅干 API。
如果您想設置 cookie :5000(這似乎更有可能),請在set-cookie標題中獲取端口號。
const csrfProtection = csrf({
cookie: {
maxAge: 900,
domain: 'http://localhost:5000'
}
})

TA貢獻1801條經驗 獲得超8個贊
如果有人從 Laravel (sanctum) 登陸這里,可以在他們的本地服務器上試試這個:-
//.env file. Try removing :port from SESSION_DOMAIN
SANCTUM_STATEFUL_DOMAINS="127.0.0.1:8000"
SESSION_DOMAIN="127.0.0.1"

TA貢獻1906條經驗 獲得超3個贊
我今天也遇到了這個問題。我使用的chrome瀏覽器版本高于80。chrome添加了一個新屬性“samesite”來保護來自v51的csrf。chrome v80+ 默認限制跨站設置cookie,使cookie無效。 控制臺警告:在http://XXX.XXX.XXX.XXXX/處設置了與跨站資源關聯的 cookie,但未設置該SameSite
屬性。SameSite=None
它已被阻止,因為 Chrome 現在僅在使用和設置時才提供帶有跨站點請求的 cookie Secure
。
添加回答
舉報