亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Cors - 此 set-cookie 域屬性對于當前主機 url 無效

Cors - 此 set-cookie 域屬性對于當前主機 url 無效

郎朗坤 2022-06-09 11:24:03
我有一個節點后端,它應該允許來自在 localhost:3000 上運行的前端應用程序的跨源請求。因此,我已將 cors 策略限制在我的域中。import csrf from 'csurf';app.use(  cors({    origin: 'http://localhost:3000',    credentials: true  }));const csrfProtection = csrf({  cookie: {    maxAge: 900,    domain: 'http://localhost:3000'  }})router.get('/csrfToken', csrfProtection, async (req, res, next) => {  res.json({ token: req.csrfToken() });});當我現在向我的服務器端點(在 localhost:5000 上運行)發出請求時,它會返回以下錯誤,即無法設置 cookie。  fetch('http://localhost:5000/csrfToken', {      method: 'GET',      credentials: 'include' })
查看完整描述

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'

  }

})


查看完整回答
反對 回復 2022-06-09
?
蝴蝶刀刀

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"


查看完整回答
反對 回復 2022-06-09
?
一只名叫tom的貓

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



查看完整回答
反對 回復 2022-06-09
  • 3 回答
  • 0 關注
  • 1623 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號