点网核心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项目中已经实施的解决方案。我错过了什么?
答
您仅限于特定来源:builder.WithOrigins("http://localhost:3000")
,这表示您的应用的请求源只能是http://localhost:3000,然后允许任何来源。
先从CORS限制最少的工作数量和从那里:
app.UseCors(builder => builder
.AllowCredentials()
.AllowAnyOrigin()
.AllowAnyHeader()
.AllowAnyMethod());
更多信息请参见this guide。
答
您是否将标志添加到控制器?将EnableCors
标志添加到您的授权控制器。
[EnableCors]
public class AuthorizationController
在你的'StartUp.cs'中,Add/UseMvc之前还是之后有Add/UseCors?它需要在之前。 –
*“响应的HTTP状态码为500”*这是问题中引用的消息的唯一重要部分。这不是一个CORS错误;它只是看起来像一个,因为服务器不会将'Access-Control-Allow-Origin'头添加到500个错误响应 - 它可能只会将其添加到2xx成功响应。所以500表示你根本没有CORS问题,而是一些服务器端故障。这是你需要确定原因和修复的实际问题:服务器说有一些致命的错误 - 服务器端故障 - 并且它已经完全停止工作,变得不可用 – sideshowbarker