該賞金過期4天。此問題的答案有資格獲得 50聲望獎勵。 FlowRan正在尋找規范的答案。
所以我在我的前端應用程式中使用第三方 API。我遇到了一些 CORS 問題。由于它是一個公共 API,我聯系了 API 維護者,要求他們解除 CORS 控制。他們已經做到了,似乎是通過放置一個*to Access-Control-Allow-Origin。
這將是完美的,但是......因為這個(舊)API 需要身份驗證,它使用 cookie,現在我收到這個錯誤(見標題)。
我的應用程式中是反應,我使用Axios了
myApiRequest.defaults.withCredentials = true;
線。
有什么方法可以在前端應用程式中做到這一點,還是后端是唯一的方法?
謝謝 !
uj5u.com熱心網友回復:
兩個問題需要兩種不同的解決方案
允許在您的網站上使用第三方域
這是您最終使用 CROS 和 ACAO 的地方。一般來說,它控制哪個域可以訪問該網站,是加載腳本還是渲染影像。
餅干政策
您可以使用 cookie 策略控制與第三方域或任何 JS 代碼共享 cookie 的方式。檢查嚴格,松懈。
但不要共享不受信任的網站來訪問您的 cookie。當他們代表用戶請求資源時。
推薦方法
嘗試執行服務器到服務器請求,并使用您的服務器作為中間人來獲取所有資料。
uj5u.com熱心網友回復:
根據這個MDN:
要在客戶端更正此問題,請確保在發出 CORS 請求時憑據標志的值為 false。
將您的憑據設定為 false:
myApiRequest.defaults.withCredentials = false;
注意:來自不同域的 XMLHttpRequest 回應不能為其自己的域設定 cookie 值,除非在發出請求之前將 withCredentials 設定為 true,無論 Access-Control- 標頭值如何。
XMLHttpRequest在后端單獨使用請求,如下所示:
var oReq = new XMLHttpRequest();
oReq.addEventListener("progress", updateProgress);
oReq.addEventListener("load", transferComplete);
oReq.addEventListener("error", transferFailed);
oReq.addEventListener("abort", transferCanceled);
oReq.open();
你的問題的答案:
我的問題是:如果不使用這種不受支持的方法,是否還有其他方法可以做到這一點?
是:因為,您正在使用從服務器端發送的請求,因此您只能從支持的方法中使用它,沒有其他方法。
閱讀鏈接:
- Axios - 沒有“訪問控制允許來源” - CORS
- https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS/Errors/CORSNotSupportingCredentials
- https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/withCredentials
- https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest
- https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/329245.html
標籤:javascript 反应 休息 公理 科斯
