簡體   English   中英

帶有 CORS 的 dot net core api 仍然拒絕請求

[英]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.

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