我在Chrome中驗證CORS請求時遇到問題。xhr.withCredentials = true;在Chrome中不起作用
我已經在Azure中運行的localhost和webservices上運行單個頁面應用程序。我使用OpenIdConnect登錄。
當我在EDGE CORS請求我的後端這樣的,認證工作:
$.ajax({
type: 'get',
url: buildBackendUrl("api/Account"),
xhrFields: { withCredentials: true }
});
但同樣也不在Chrome工作。當我手動輸入webservice url到瀏覽器時,請求被認證。
我檢查請求頭的CORS請求,所不同的是在餅乾:
- 邊緣:
ARRAfinity=...; AspNetCore.Cookies=...
- 鉻:
ARRAfinity=...
爲什麼Chrome不包括所有Cookie嗎?
編輯:這裏有要求的提琴手逮住:
- 重定向當我按下登錄:
myapp.azurewebsites.net/api/Account/login?returnUrl=http://localhost:46563/
- 由於我已經登錄沒有必要去到登錄頁面。重定向
myapp.azurewebsites.net/signin-oidc
- 重定向回:從本地主機制造
localhost:46563/
- CORS:
myapp-dev.azurewebsites.net/api/Account
在既,要求NR 3或4我沒有看到餅乾。
無論如何,請求NR 2(myapp.azurewebsites.net/signin-oidc
)的響應試圖套餅乾:
HTTP/1.1 302 Found
Cache-Control: no-cache
Pragma: no-cache
Content-Length: 0
Expires: -1
Location: http://localhost:46563/
Set-Cookie: .AspNetCore.Correlation.OpenIdConnect.3ifhkwCQkMuZkTgBxYiKMOSoLgTX2nIex-8aH-syh5Q=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/signin-oidc; samesite=lax
Set-Cookie: .AspNetCore.OpenIdConnect.Nonce.CfDJ8FG-d2csck1FsQu2pwqnsxLd4w9YWobqchk1w3xMgy7bCX_KilCuRxuj4U0bSTAL-dD_iwdEaZI6pclqlP-3f7QBuKUMS379DFiBPd_tkEkyB_IYVWzJsR1xtw-_qcS1pQL6ial_C2ywbSwRucBxUqtDPMcuFEIomNDDnklpqWUmS_5Xb_tB23Ew7b14M861pL1CtJ18uPqgu-nOgn1RygqhBhMECoQfQ7YhXN_BtfiIbdPfw00jWNfMVc5G1B-SnT_eq80_RmxQ4_JOX3ZJfiI=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/signin-oidc; samesite=lax
Set-Cookie: .AspNetCore.Cookies=...; path=/; samesite=lax; httponly
而不可能告訴那些簡短片段......我想你首先託運這些Cookie是否設在Chrome瀏覽器開始? – CBroe
所以要清楚的是,這是關於爲'localhost'域設置的Cookie,並且您期望發送 - 何時準確地到達哪裏? – CBroe
我檢查過在鉻設置中允許使用第三方Cookie。我希望我發送的'.AspNetCore.Cookies = ...'與本地主機的請求到'myapp.azurewebsites.net/api/Account'。不過,我不能100%確定這些cookies來自哪裏。我想這些是由myapp.azurewebsites生成的。net/signin-oidc並設置爲本地主機 – Liero