[英]Cross-domain cookies in preflight requests
兩個組件:
登錄時,Apigee 使用Set-Cookie
header 設置jwt
cookie:
Set-Cookie: jwt={jwtoken};secure;httponly;path=/;samesite=none
在客戶端 Chrome 向我顯示了框架https://react.mycompany.com
的 cookie:
name: jwt
value: XXX
domain: apigee.proxy.com
path: /
httpOnly: true
secure: true
sameSite: none
現在,對於非身份驗證請求,Apigee 在處理請求之前會檢查jwt
cookie 的存在。
cookie 不會在OPTIONS
預檢請求中發送,因此所有調用都會失敗。
在客戶端,我們使用fetch()
API 和credentials: 'include'
。
我在這里想念什么?
瀏覽器永遠不會在預檢OPTIONS
請求中發送 cookies 。 所以問題描述的是預期的行為。 瀏覽器不在預檢中發送 cookies 的原因是因為 CORS 協議的規范要求瀏覽器從預檢中排除 cookies 和所有其他標准標頭憑據(例如,授權標頭)。 請參閱https://fetch.spec.whatwg.org/#ref-for-credentials%E2%91%A5 ,其中指出:
CORS 預檢請求從不包含憑據
…另見答案https://stackoverflow.com/a/50959576/441757 。
因此,預檢發送到的服務器必須配置為允許未經身份驗證的OPTIONS
請求 - 並且必須以 200 OK 響應OPTIONS
請求,即使請求不包含任何 cookies 或其他憑據。 這是 CORS 協議的基本要求。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.