簡體   English   中英

從API重定向到Identityserver時出現Angular2 CORS錯誤

[英]Angular2 CORS error when being redirected from API to Identityserver

我有一個Angular2應用程序(在localhost:3003上運行),它與.net核心Web API(在localhost:5432上運行)和IdentityServer(在localhost:5555上運行)進行通訊。 通過在Startup類的Configure方法中添加以下內容,我分別在API和IdentityServer中啟用了CORS:

app.UseCors(builder => {
  builder.AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader();
});

這解決了我最初讓Angular2應用通過xhr與身份服務器通信的問題。 但是,我現在使用[Authorize]屬性保護了API,因此它將把未經身份驗證的xhr請求重定向到Identityserver,並且如果我在xhr請求中提供了訪問令牌,它也需要使用Identityserver進行驗證。 但是,這給了我一個CORS錯誤:

XMLHttpRequest無法加載http:// localhost:5432 / api / data 從' http:// localhost:5432 / api / data '重定向到' http:// localhost:5555 / connect / authorize?client_id = blahblahblah '已被CORS策略阻止:請求需要進行預檢,因此不允許交叉-origin重定向。

查看網絡跟蹤,可以看到正在執行飛行前CORS請求並成功(帶有204響應),但是包含我的訪問令牌的數據實際請求卻得到302響應和上述錯誤。

任何人對我需要設置什么(以及在哪里/使用什么應用程序)以解決此問題有任何建議?

API資源不需要重定向到授權服務器。

首先,Angular應用程序應從授權服務器請求一個access_token。 該請求將返回到Angular網站。

然后,Angular站點使用access_token調用API資源。 API資源將使用權限(IdentityServer)驗證令牌,但沒有重定向。 如果未發送access_token,則API服務器將給出401未經授權的響應。

我認為Identity Server根本不需要CORS。 也許還有另一個原因,或者我在上面的場景中缺少了一些東西。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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