Contents

.Net Core 設定 Middleware 引發前端錯誤問題

Http Status Code 401 前端 axios status 抓到狀態是 0 是怎麼一回事?

問題

由於前端說我回錯誤沒有抓到 HTTP Status Code,說他的 axios 抓到 status 都為 0。但是我看開發著工具有顯示 status 為 0。這到底是什麼事情?(剛好農曆七月遇到鬼事)

https://i.imgur.com/XMf3RBK.png

後來改用 fetch 原生語法發生下面錯誤。和相關 NetWorkErr 錯誤。
https://i.imgur.com/nHyYINQ.png

沒設定到 CORS

我看大多數文章說沒有設定 Access-Control-Allow-Origin: * 所造成的問題。所以 Network 401 但因為沒有 Access-Control-Allow-Origin: *,所以沒有錯誤。axios 沒寫出錯誤可能是 try catch 處理掉,所以沒什麼資訊。 status 才會得到是 0。

我有設定 CORS 阿

但我 .Net Core 有設定這個。只發生錯誤時候不會傳Access-Control-Allow-Origin: *

1
2
3
4
5
    app.UseAuthentication();

    app.UseAuthorization();

    app.UseCors();

順序

https://d1dwq032kyr03c.cloudfront.net/upload/images/20200917/20129389CIhrwSrpcq.png

詳細可以看[Day03] Middleware- 我與 ASP.NET Core 3 的 30天 - iT 邦幫忙::一起幫忙解決難題,拯救 IT 人的一天

CORS 需要放在 authentication 上面,這樣可以解決上面那個問題。之前一直在想順序錯了會發生什麼,但經過這件事情,我大概想得出來是什麼原因造成的。CORS在後面的話,Authentication MiddleWare 驗證使用者不過會回傳,當下CORS MiddleWare 就不會經過。所以這一點需要特別注意!