【问题标题】:Cannot send Ajax request because of CORS from my UI app to API app even CORS on API is enabled由于 CORS 从我的 UI 应用程序到 API 应用程序,即使启用了 API 上的 CORS,也无法发送 Ajax 请求
【发布时间】:2020-06-04 13:00:05
【问题描述】:

我必须使用位于一个来源但具有不同端口的应用程序 一是UI,二是API 当我从“邮递员”或浏览器发送请求时,响应代码为 200,一切正常 但是,当我从浏览器的 UI 应用程序发送请求 throw ajax 时,由于 Cors,我收到失败的请求 enter image description here

如果需要,在 Startup 我有 Cors 政策并使用它。这是 ConfigureServices 方法

public void ConfigureServices(IServiceCollection services)
        {
            services.AddDbContext<ApplicationContext>(options =>
                options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection"),
                x => x.MigrationsAssembly("CRM.API")));

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

            services.AddHangfire(x => x.UseSqlServerStorage(Configuration.GetConnectionString("DefaultConnection")));

            services.AddScoped<IEmailBirthdayManager, EmailBirthdayManager>();
            services.AddSingleton<IAccessManager, AccessManager>();

            services.AddControllers().AddNewtonsoftJson(options =>
                options.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore);

            //services.AddMvc().AddNewtonsoftJson(options =>
            //    options.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore);
            services.AddSwaggerGen(c =>
            {
                c.SwaggerDoc("v1", new OpenApiInfo { Title = "CRM.API", Version = "v1" });
                c.ResolveConflictingActions(apiDescriptions => apiDescriptions.First());
            });
        } 

有配置方法

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            app.UseSwagger();


            app.UseSwaggerUI(c =>
            {
                c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1");
            });

            //            app.UseMiddleware<AuthorizationMiddleware>();

            app.UseHangfireDashboard("/hangfire", new DashboardOptions
            {
                Authorization = new[] { new HangfireDashboardAuthorizationFilter()}
            });

            app.UseHangfireServer();

            HangfireJobScheduler.ScheduleReccuringJobs();

            app.UseStaticFiles();

            app.UseHttpsRedirection();

            app.UseRouting();

            app.UseCors("AllowAll");

            app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllerRoute(
                    name: "default",
                    pattern: "{controller=Departments}/{action=GetDepartments}/{id?}");
            });
        } 

还有对api的ajax请求

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
$.ajax({
        url: `https://p-host-crm-2.hostco.ru:1337/api/users/getUserByLogin/gorbunov`,
        async: false,
        success: function (data) {
            console.log("Data Loaded: ");
            console.log(data);
        }
    });

我还尝试在我的方法和控制器中使用[EnableCors("AllowAll")] 尝试使用AddDefaultPolicy" code and "app.UseCors() 尝试使用SetIsOriginAllowed(origin =&gt; true)

如果你问我使用什么网络服务器,我会回答:IIS 在 IIS 的设置中我没有找到任何东西

互联网上的任何建议和解决方案都没有帮助我

等待您的回答!

【问题讨论】:

  • 尝试在configure方法末尾添加app.UseMvc()
  • 响应的 HTTP 状态码是什么?您可以使用浏览器开发工具中的网络窗格进行检查。是 4xx 还是 5xx 错误而不是 200 OK 成功响应?

标签: asp.net-web-api .net-core cors startup .net-core-3.1


【解决方案1】:

在 web 配置中你必须启用 cors:config.EnableCors(); 然后你必须使用上面控制器类的属性设置原点 :[EnableCors(origins: "*", headers: "*", methods: "*")]

【讨论】:

    猜你喜欢
    • 2020-05-11
    • 2015-02-25
    • 2021-08-01
    • 2016-06-30
    • 2020-10-18
    • 2017-05-03
    • 2017-06-19
    • 2019-04-29
    • 2016-12-02
    相关资源
    最近更新 更多