typescript - Cómo establecer la longitud máxima de una URL en una llamada HttpClient de Angular para prevenir errores de política CORS
En Visual Studio 2019, la solución tiene un proyecto de interfaz de usuario/front-end en Angular además de proyectos .NET Core.
Ocasionalmente estoy recibiendo el temido error CORS al realizar una llamada HttpClient desde mi proyecto Angular a mi controlador .NET Core:
Después de muchas pruebas me di cuenta de que se produce cuando la URL de la solicitud supera los 512 caracteres. El archivo Startup.cs en el proyecto del controlador tiene configuradas las cosas de CORS:
En el método ConfigureServices:
services.AddCors(options =>
{
options.AddPolicy("MyPolicy",
builder =>
builder.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader());
});
En el método Configure, la primera línea es:
app.UseCors("MyPolicy");
¿Cómo/Qué/Dónde puedo permitir una cadena URL más larga?
Aquí está el código principal involucrado en mi archivo customer.service.ts del proyecto Angular:
import { Injectable } from "@angular/core"
import { HttpClient } from '@angular/common/http';
import { Observable } from 'rxjs';
import { tap } from 'rxjs/operators';
import { ICustomerReturn } from "../someplace";
...
...
getCustomerData(): Observable<ICustomerReturn[]> {
const custData = {
customerName: "John-SuperDuperReally Incredibly Long Name so we just call him john!",
customerAddress: "1234567890\\SouthEastWestMain&NotSoMainStreet",
customerCityState: "Providence, State of Rhode Island and Providence Plantations",
customerZipCode: "02901"
}
const s1: string = encodeURIComponent(JSON.stringify(custData));
return this.httpClient
.get<ICustomerReturn[]>(`https://localhost:44444/api/Customer/GetData/` + s1)
.pipe(
tap(_ => console.log('got data')),
);
};
La llamada HttpClient anterior funcionará: llegará al controlador de Customer y devolverá datos. Sin embargo, si agrego más caracteres al campo customerName:
customerName: "John-SuperDuperReally Incredibly Long Name so we just call him john!John-SuperDuperReally Incredibly Long Name so we just call him john!John-SuperDuperReally Incredibly Long Name so we just call him john!John-SuperDuperReally Incredibly Long Name so we just call him john!"
Cuando esto se codifica produce una URL total de más de 600 caracteres, obtengo el error CORS. He ajustado los datos numerosas veces y ese límite de ~512 es lo que me está afectando.
