[英]Dot Net Core Web API with Javascript - CORS policy error
[英]dot net core api with CORS still rejecting request
我在 localhost:5000 上運行了一個 dot net core API。 我添加了
services.AddCors();
到 ConfigureServices 方法,以及
app.UseCors(builder => builder.WithOrigins("http://localhost:3000")
.AllowAnyOrigin()
.AllowAnyHeader()
.AllowAnyMethod());
到 StartUp 中的 Configure 方法。
我有一個正在嘗試的 js 客戶端
return fetch('http://localhost:5000/api/Authorization', {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json',
},
body: JSON.stringify({
UserName: userName,
Password: password,
})}).then((response) => response.json())
.then((responseJson) => {return responseJson.userIsAdmin});
}
但是當最后一個被執行時,瀏覽器拒絕,說:
請求的資源上不存在“Access-Control-Allow-Origin”標頭。 因此,不允許訪問 Origin ' http://localhost:3000 '。 響應的 HTTP 狀態代碼為 500。
研究指出上述 API 項目中已經實施的解決方案。 我錯過了什么?
您僅限於特定來源: builder.WithOrigins("http://localhost:3000")
,這意味着您的應用程序的請求來源只能是http://localhost:3000 ,然后允許任何來源。
從最少的 CORS 限制開始,然后從那里開始工作:
app.UseCors(builder => builder
.AllowCredentials()
.AllowAnyOrigin()
.AllowAnyHeader()
.AllowAnyMethod());
有關更多信息,請參閱本指南。
您是否也將標志添加到控制器? 將EnableCors
標志添加到您的授權控制器。
[EnableCors]
public class AuthorizationController
所以對我來說,解決方案是將其中一個評論和一個答案結合起來。 解決問題”
1 - 修復導致“響應具有 HTTP 狀態代碼 500 ”的系統錯誤,如 sideshowbarker 所述(謝謝)。 就我而言,我臨時啟用了 webapi 中的靜態文件,並將我的網頁放在 wwwroot 中。 這是我完全避免使用 CORS 此外,如果我只關注 DEBUG CONSOLE 並注意到流過的堆棧軌道,我會更快地發現 500 錯誤。
2 - 在修復 500 錯誤的原因並關閉靜態文件后,我不得不更改我的 app.UseCors 代碼部分以匹配 Brian Ogden(謝謝)的具體回答:
app.UseCors(builder => builder
.AllowCredentials()
.AllowAnyOrigin()
.AllowAnyHeader()
.AllowAnyMethod());
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.