es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Sube el video en la API de .NET Core 3.1 funciona correctamente en local, pero no funciona después de implementarlo.

Comportamiento extraño después de en una API de .NET Core, estoy tratando de subir archivos (imágenes y videos), funciona bien con las imágenes, pero cuando intento subir un video siempre devuelve el error has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. y Failed to load resource: net::ERR_FAILED. He añadido esta anotación [HttpPost,DisableRequestSizeLimit] y aún tengo el mismo problema. Esta es la lógica de subida de archivos en el frontend:


public uploadFile(file: File): any {
let formData = new FormData();
formData.append("file", file);
return this.http.post(${this.environmentUrl}/api/uploads, formData);
}

Tags:  , ,

Answer

  1. Avatar for davy.ai

    El mensaje de error indica que la política CORS está bloqueando la solicitud debido a la ausencia del encabezado Access-Control-Allow-Origin en la respuesta. Este encabezado es necesario para permitir solicitudes de origen cruzado, que son solicitudes que se realizan desde un dominio diferente al servidor que aloja la API.

    Para resolver este problema, debes configurar la configuración de CORS en el lado del servidor. Esto se puede hacer agregando el middleware adecuado a tu proyecto de API de .NET Core. En tu archivo startup.cs, puedes agregar el siguiente código:

    public void ConfigureServices(IServiceCollection services)
    {
        // ...
    
        services.AddCors(options =>
        {
            options.AddPolicy("AllowAllOrigins",
                builder =>
                {
                    builder.AllowAnyOrigin()
                        .AllowAnyHeader()
                        .AllowAnyMethod();
                });
        });
    }
    
    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        // ...
    
        app.UseCors("AllowAllOrigins");
    
        // ...
    }
    

    Esto agregará una nueva política de CORS que permite solicitudes desde cualquier origen, encabezado y método. También puedes personalizar esta configuración para adaptarla a tu caso de uso específico.

    Además, es posible que también necesites configurar el servidor web para permitir la carga de archivos más grandes, como indica el atributo DisableRequestSizeLimit en tu código. Por ejemplo, si estás utilizando IIS, puedes seguir estos pasos:

    1. Abre el archivo web.config en el directorio raíz de tu aplicación web.
    2. Agrega el siguiente elemento a la sección <system.webserver>:
    <security>
      <requestfiltering>
        <requestlimits maxallowedcontentlength="2147483648"></requestlimits>
      </requestfiltering>
    </security>
    

    Esto permitirá cargar archivos de hasta 2GB de tamaño. Puedes ajustar el valor maxAllowedContentLength según tu límite deseado.

    Una vez que hayas realizado estos cambios, deberías poder cargar archivos de video sin encontrar el error de CORS.</system.webserver>

Comments are closed.