点网核心api与CORS仍拒绝请求

问题描述:

我有一个dot net核心API在本地主机上运行:5000。 我已经添加点网核心api与CORS仍拒绝请求

services.AddCors(); 

到ConfigureServices方法,并

app.UseCors(builder => builder.WithOrigins("http://localhost:3000") 
      .AllowAnyOrigin() 
      .AllowAnyHeader() 
      .AllowAnyMethod()); 

在启动时的配置方法。

我已经得到了尝试

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}); 
} 

一个js客户端,但去年被执行时,浏览器拒绝,说:

否“访问控制允许来源”标题出现在请求的 资源中。原因'http://localhost:3000'因此不允许 访问。该响应具有HTTP状态码500.

研究指向上述API项目中已经实施的解决方案。我错过了什么?

+0

在你的'StartUp.cs'中,Add/UseMvc之前还是之后有Add/UseCors?它需要在之前。 –

+0

*“响应的HTTP状态码为500”*这是问题中引用的消息的唯一重要部分。这不是一个CORS错误;它只是看起来像一个,因为服务器不会将'Access-Control-Allow-Origin'头添加到500个错误响应 - 它可能只会将其添加到2xx成功响应。所以500表示你根本没有CORS问题,而是一些服务器端故障。这是你需要确定原因和修复的实际问题:服务器说有一些致命的错误 - 服务器端故障 - 并且它已经完全停止工作,变得不可用 – sideshowbarker

您仅限于特定来源:builder.WithOrigins("http://localhost:3000"),这表示您的应用的请求源只能是http://localhost:3000,然后允许任何来源。

先从CORS限制最少的工作数量和从那里:

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

更多信息请参见this guide

您是否将标志添加到控制器?将EnableCors标志添加到您的授权控制器。

[EnableCors] 
public class AuthorizationController