Estoy tratando de establecer un encabezado llamado Cookie. Hago esto usando un interceptor, para que se haga en cada solicitud.
@Injectable export class HeaderInterceptor implements HttpInterceptor { constructor(private: authService: AuthenticationService) {} intercept(reg: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> { return from(this.authService.getAuthentication()).pipe( switchMap((token) => { const headers = req.headers .set(TOKEN, "someToken") .set("Cookie", "someCookie") .append("Content-Type", "application/json") .append("Accept", "application/json"); const requestClone = req.clone({ headers, withCredentials: true }); return next.handle(requestClone); }) ); } }siempre obtengo:
Se denegó el intento de establecer un encabezado prohibido: Cookie
Entonces, ¿qué puedo hacer aquí? También intenté configurar withCredentials: true directamente en cada solicitud que tampoco funcionó. ¿Hay alguna otra manera?
Se prohíbe el uso de algunos encabezados mediante programación por motivos de seguridad y para garantizar que el agente de usuario mantenga el control total sobre ellos.
La cookie es uno de los encabezados prohibidos entre la lista de nombres de encabezados prohibidos y, por lo tanto, no puede configurarla dentro del encabezado de solicitud HTTP directamente desde el código.
De documentos :
Un nombre de encabezado prohibido es el nombre de cualquier encabezado HTTP que no se puede modificar mediante programación; específicamente, un nombre de encabezado de solicitud HTTP
Especificaciones: https://fetch.spec.whatwg.org/#forbidden-header-name
Siempre puede configurar las cookies a través de document.cookie y el navegador enviará automáticamente las cookies que coincidan con los criterios. Intentar establecer cookies en un dominio externo se ignorará en silencio.
Angular presenta un token DOCUMENT DI que se puede usar para inyectar documentos en un servicio. Puede leer más sobre cómo inyectar documentos en servicio .