簡體   English   中英

預檢請求中的跨域 cookies

[英]Cross-domain cookies in preflight requests

兩個組件:

  1. https://react.mycompany.com上的 React 單頁應用程序
  2. https://apigee.proxy.com上的 Apigee API 代理

登錄時,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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM