Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Api .net core允许在使用CORS时发回错误401(而不是零)_Api_Asp.net Core_Cors_Http Status Codes - Fatal编程技术网

Api .net core允许在使用CORS时发回错误401(而不是零)

Api .net core允许在使用CORS时发回错误401(而不是零),api,asp.net-core,cors,http-status-codes,Api,Asp.net Core,Cors,Http Status Codes,我的客户端JS应用程序在实际为401时接收到状态代码0。 当我使用postman运行相同的请求时,我得到了预期的401 我已启用cors,如下所示: services.AddCors(o => o.AddPolicy("cors", builder => { builder.WithOrigins("http://localhost:4200") .AllowAnyMethod()

我的客户端JS应用程序在实际为401时接收到状态代码0。
当我使用postman运行相同的请求时,我得到了预期的401

我已启用cors,如下所示:

services.AddCors(o => o.AddPolicy("cors", builder =>
            {
                builder.WithOrigins("http://localhost:4200")
                       .AllowAnyMethod()
                       .AllowAnyHeader()
                       .AllowCredentials();
            }));

....
app.UseCors("cors");
当没有身份验证问题时,cors正在工作(401)

我在客户端得到错误代码0,而它应该是401


此错误的原因很可能是服务器上的COR和web浏览器的组合

原因:我猜,服务器响应中缺少一些必需的CORS头。当使用不正确的Cors头时,浏览器返回0状态

解决方案:我猜您注册中间件的顺序不正确。 根据文件:

对于端点路由,必须将CORS中间件配置为 在对UseRouting和UseEndpoints的调用之间执行。不准确的 配置将导致中间件停止正常运行

我会按照这样的顺序为您注册中间件(取决于您使用的中间件):


邮递员不关心CORS,所以不管发生什么,它都会在那里工作:)@juunas我说过,为了澄清401确实从服务器返回,您是否检查了邮递员发送的所有标题*,并试图在JS请求中完全相同?*在选项卡标题中,展开“临时标题”以查看邮差在没有明确设置的情况下发送的所有内容them@GuillaumeSasdy浏览器网络选项卡显示401。但是在JS中它是0
app.UseRouting();
app.UseCors("cors");
app.UseAuthorization();

app.UseEndpoints(endpoints =>
{
    endpoints.MapControllers();
});
...
//register app.UseMvc(); last