ASP.NET Core跨域设置
项目中经常会遇到跨域问题,解决方法:
在appsettings.json 文件中添加json项
{ "Logging": { "LogLevel": { "Default": "Warning" } }, "AllowedHosts": "*", "AppCores": "https://www.xxx0.com,https://www.xxx1.com" }
在Startup文件中进行设置
using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.HttpsPolicy; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using SignalRTestCore.SignalR; namespace SignalRTestCore { public class Startup { public Startup(IConfiguration configuration) { Configuration = configuration; } public IConfiguration Configuration { get; } // This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { services.Configure<CookiePolicyOptions>(options => { // This lambda determines whether user consent for non-essential cookies is needed for a given request. options.CheckConsentNeeded = context => true; options.MinimumSameSitePolicy = SameSiteMode.None; }); var urls = Configuration["AppCores"].Split(','); services.AddCors(options => options.AddPolicy("AllowAll", policy => policy.WithOrigins(urls).AllowAnyMethod().AllowAnyHeader().AllowCredentials()) ); services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2); } // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. public void Configure(IApplicationBuilder app, IHostingEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } else { app.UseExceptionHandler("/Error"); // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts. app.UseHsts(); } app.UseHttpsRedirection(); app.UseStaticFiles(); app.UseCookiePolicy(); app.UseCors("AllowAll"); app.UseMvc(); } } }
在Controller类上进行跨域设置 [EnableCors("AllowAll")]