Javascript CORS仍拒绝请求的dot net核心api

Javascript CORS仍拒绝请求的dot net核心api,javascript,.net-core,Javascript,.net Core,我在localhost:5000上运行了一个dotnetcoreapi。 我补充说 services.AddCors(); 到ConfigureServices方法,以及 app.UseCors(builder => builder.WithOrigins("http://localhost:3000") .AllowAnyOrigin() .AllowAnyHeader() .AllowAnyMethod());

我在localhost:5000上运行了一个dotnetcoreapi。 我补充说

services.AddCors();
到ConfigureServices方法,以及

app.UseCors(builder => builder.WithOrigins("http://localhost:3000")
            .AllowAnyOrigin()
            .AllowAnyHeader()
            .AllowAnyMethod());
要在启动时配置方法

我有一个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”标头 资源。因此,不允许使用源“” 通道响应的HTTP状态代码为500


研究指出了上述API项目中已经实现的解决方案。我缺少什么?

您将限制到特定的原点:
builder.WithOrigins(“http://localhost:3000“”
,这意味着您的应用程序的请求来源只能是,然后允许任何来源

从最少的CORS限制开始,然后开始工作:

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

有关详细信息,请参阅。

您将限制到特定的原点:
builder.WithOriginates(“http://localhost:3000“”
,这意味着您的应用程序的请求来源只能是,然后允许任何来源

从最少的CORS限制开始,然后开始工作:

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

有关更多信息,请参阅。

是否也将该标志添加到控制器?将
EnableCors
标志添加到授权控制器

[EnableCors]
public class AuthorizationController

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

[EnableCors]
public class AuthorizationController

因此,我的解决方案是将一条评论和一条答案结合起来。“解决问题”

1-修复系统错误,如sideshowbarker所述,导致“响应的HTTP状态代码为500”(谢谢)。在我的例子中,我临时在webapi中启用了静态文件,并将我的网页放在wwwroot中。这是因为我完全避免了CORS。此外,如果我只注意调试控制台并注意到经过的堆栈轨迹,我会更快地发现500错误

2-在修复了500错误的原因并关闭了静态文件后,我不得不更改我的app.UseCors代码部分,以匹配Brian Ogden(谢谢)的具体回答:

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

因此,我的解决方案是将一条评论和一条答案结合起来。解决问题“

1-修复系统错误,如sideshowbarker所述,导致“响应的HTTP状态代码为500”(谢谢)。在我的例子中,我临时在webapi中启用了静态文件,并将我的网页放在wwwroot中。这就是我完全避免CORS的原因。另外,如果我只注意调试控制台并注意到经过的堆栈轨迹,我会更快地发现500错误

2-在修复了500错误的原因并关闭了静态文件后,我不得不更改我的app.UseCors代码部分,以匹配Brian Ogden(谢谢)的具体回答:

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

在您的
StartUp.cs
中,在Add/UseMvc之前或之后,哪里有Add/usecor?必须在之前。“响应的HTTP状态代码为500”⬅ 这是问题中提到的信息中唯一重要的部分。这不是CORS的错误;它看起来只有一个,因为服务器没有将“Access Control Allow Origin”头添加到500个错误响应中,它可能只将其添加到2xx成功响应中。因此,500表示您根本没有CORS问题,而是服务器端出现故障。这就是您需要确定的实际问题&修复:服务器说服务器端出现了一些致命错误,服务器端故障已完全停止工作,在
启动时变得不可用。cs
,在Add/UseMvc之前或之后,Add/UseCors在哪里?必须在之前。“响应的HTTP状态代码为500”⬅ 这是问题中提到的信息中唯一重要的部分。这不是CORS的错误;它看起来只有一个,因为服务器没有将“Access Control Allow Origin”头添加到500个错误响应中,它可能只将其添加到2xx成功响应中。因此,500表示您根本没有CORS问题,而是服务器端出现故障。这就是您需要确定原因的实际问题&修复:服务器说服务器端出现了致命错误,服务器端出现故障,它已完全停止工作,变得不可用