我正在尝试关闭Cors

时间:2019-01-14 14:38:25

标签: c# asp.net cors asp.net-core-2.1

Iam使用asp.net core 2.1。我正在尝试关闭电源。我尝试了不同的代码。我在startup.cs Configure方法中添加了以下代码,该代码无效:

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

然后,我还在startup.cs ConfigureService方法中添加了以下代码:

            services.AddCors(options =>
            {
                options.AddPolicy("AllowAll",
                    builder =>
                    {
                        builder
                            .AllowAnyOrigin()
                            .AllowAnyMethod()
                            .AllowAnyHeader()
                            .AllowCredentials();
                    });
            });

它仍然无法正常工作,但出现了Cors错误。我要求您是否遇到相同的问题

注意:我正在项目中使用JWT。每当每个用户登录时,程序都会向该用户返回一个jwt。前端是在Angular 6.0.3中实现的。

JWT Helper方法

public static class JwtExtension
    {
        //handle errors
        public static void AddApplicationError(this HttpResponse response, string message)
        {
            // Jwt operation add to the header
            response.Headers.Add("Application-Error", message);
            response.Headers.Add("Access-Control-Allow-Origin", "*");
            response.Headers.Add("Access-Control-Expose-Header", "Application-Error");
        }
    }

我得到的错误

Access to XMLHttpRequest at 'http://localhost:52824/api/auth/panelInfo' from origin 'http://localhost:4200' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

已更新: 我解决了,CORS中间件必须在您要支持跨域请求的应用程序中的所有定义端点之前(例如,在调用UseMvc之前)

在void configure方法中(在startup.cs中)

// Cors Middleware
app.UseCors(x => x.AllowAnyHeader().AllowAnyMethod().AllowAnyOrigin().AllowCredentials());
app.UseAuthentication();
app.UseMvc();

0 个答案:

没有答案