Tengo un problema de CORS en un servidor web IIS. Puedo ejecutar el siguiente código en mi máquina de desarrollo local que ejecuta IIS Express (cambiando los puertos y URL apropiados), pero recibo un error de cors cuando intento acceder a la aplicación una vez que está implementada. El error (lo sé en todo Internet) es
El acceso para buscar en 'https://example.com:5001/api/Person/PostPerson' desde el origen 'https://example.com:44337' ha sido bloqueado por la política de CORS: la respuesta a la solicitud de verificación previa no pasa el acceso comprobación de control: no hay ningún encabezado 'Access-Control-Allow-Origin' en el recurso solicitado. Si una respuesta opaca satisface sus necesidades, establezca el modo de la solicitud en 'no-cors' para obtener el recurso con CORS deshabilitado.
Estoy trabajando en un proyecto de aplicación .NET core 5.0 C# Web API. A continuación se muestra mi modelo de persona que estoy tratando de PUBLICAR.
public class Person { public string FirstName { get; set; } public string LastName { get; set; } }A continuación se muestra mi controlador de persona
[Route("api/[controller]/[action]")] [ApiController] public class PersonController : ControllerBase { private JsonSerializerSettings _jsonSettings; [EnableCors("mypolicy")] [HttpPost] public string PostPerson([FromBody]Person person) { return JsonConvert.SerializeObject("success", _jsonSettings); } }A continuación se muestran los métodos de startup.cs.
ConfigurarServicios
public void ConfigureServices(IServiceCollection services) { services.AddControllers(); services.AddCors(options => { options.AddDefaultPolicy( builder => builder.WithOrigins("https://localhost:44363").AllowAnyHeader()); options.AddPolicy("mypolicy", builder => builder.WithOrigins("https://example.com:44337").AllowAnyHeader()); });Configurar método
public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { app.UseRouting(); app.UseCors(); app.UseAuthorization(); app.UseEndpoints(endpoints => { endpoints.MapControllers().RequireCors("mypolicy"); }); }También verifiqué la conectividad a la API desde mi computadora portátil usando Postman
Agradezco su tiempo, ¡Gracias!
elimine todo su código cors y colóquelo en la parte superior de ConfigureServices
services.AddCors(o => o.AddPolicy("AllowAnyOrigins", builder => { builder.AllowAnyOrigin() .AllowAnyMethod() .AllowAnyHeader(); }));reemplaza el tuyo por este
app.UseRouting(); app.UseCors("AllowAnyOrigins"); app.UseAuthorization();solo si este código funciona, puede intentar reemplazar builder.AllowAnyOrigin() con este
builder.WithOrigins("http://localhost:44363", "https://example.com")