我已经试了好几天了,但还是不能让它工作。我有一个本地的网络应用程序和一个本地的,独立运行的。NET 6.0 WebAPI,它应该接受发布请求。
发送获取请求的Web应用程序在localhost:3000上运行,WebAPI在localhost:44379上运行
我的CORS-Policy在Program.cs文件中设置如下:
appsettings.json:
"AllowedHosts": "*",
"cors": {
"rules": [
{
"origin": "*",
"allow": true
}
]
}
Program.cs:
builder.Services.AddCors(options =>
{
options.AddPolicy("AllowMyOrigin",
builder => builder
.AllowAnyMethod()
.AllowAnyHeader()
.AllowAnyOrigin()
);
});
然后我在运行应用程序之前使用它们,我还确保在路由调用之后和授权调用之前调用cors策略:
var app = builder.Build();
app.UseSwagger();
app.UseSwaggerUI();
app.UseHttpsRedirection();
app.UseRouting();
app.UseCors("AllowMyOrigin");
app.UseAuthorization();
app.UseMiddleware<ApiKeyMiddleware>();
app.MapControllers();
app.Run();
我仍然得到cors错误,也与启用的浏览器加载项,这应该禁用浏览器上的问题。
我似乎不知道缺少了什么,希望得到帮助
1条答案
按热度按时间4zcjmb1e1#
结果证明我的CORS配置已经正确设置。
正如jdweng在评论中指出的,400的响应类型为:“cors”可能只是一个假错误,以混淆黑客,因为一些服务器可能会这样做。
这意味着我将注意力转移到检查Request-Header和Payload上,并且能够识别JSON-Payload的一个属性的DateTime转换问题。
修复后,请求通过,我也没有得到任何CORS错误。
因此,如果您遇到类似的问题,并且已经非常确定CORS选项的正确设置,请务必调试您的Fetch/Axios请求,并在后端实现正确的错误处理,以查看输入模型是否有效,并捕获错误以发回更详细的错误。