ng2 obtiene el token csrf de la cookie y lo publica como encabezado

Después de pasar 2 días completos buscando en la web y leyendo documentos y toneladas de preguntas abiertas de personas que enfrentan el mismo problema, todavía no entiendo cómo Angular 2 maneja las cookies (de origen x) y cómo acceder a ellas.

El problema: El back-end envía 2 cookies con x-csrf-token y JSESSIONID dentro de él. Mi trabajo es mantener el token csrf en la memoria (ng2) y enviarlo (solo) de regreso comoencabezamiento (no cookie) con cada publicación en el back-end.

HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Access-Control-Allow-Origin: http://localhost:4200
Access-Control-Allow-Credentials: true
Access-Control-Expose-Headers: Access-Control-Allow-Origin,Access-Control-Allow-Credentials
Set-Cookie: x-csrf-token=8555257a-396f-43ac-8587-c6d489e76026; Path=/app
Set-Cookie: JSESSIONID=73E38392C60370E38FBAF80143ECE212; Path=/app/; HttpOnly
Expires: Thu, 12 Apr 2018 07:49:02 GMT
Cache-Control: max-age=31536000
Content-Type: application/json;charset=UTF-8
Transfer-Encoding: chunked
Date: Wed, 12 Apr 2017 07:49:02 GMT

Mi solución parcial: Creé una clase RequesstOptions personalizada que extiende las BaseRequestOptions. Se agregaron algunos encabezados adicionales y se estableció 'withCredentials' como verdadero.

export class MyRequestOptions extends BaseRequestOptions {

  headers: Headers = new Headers({
    'Accept': 'application/json',
    'Content-Type': 'application/json',
  });

  withCredentials = true;
}

En mi HttpService hago la publicación y me pongo así:

@Injectable()
export class HttpService {

  constructor(
    protected _http: Http,
    protected requestOptions: RequestOptions
  ) {  }

  get(url): Observable<any> {
    return this._http.get(url, this.requestOptions).map( res => res.json() );
  }

  post(url: string, object: any): Observable<any> {
    return this._http.post(url, object, this.requestOptions).map( res => res.json() );
  }
}

y en mi app.module hago la magia así:

 providers: [
    { provide: RequestOptions, useClass: DocumentumDefaultRequestOptions },
    { provide: XSRFStrategy, useFactory: xsrfFactory }
  ],

my xsrfFactory

export function xsrfFactory() {
  return new CookieXSRFStrategy('x-csrf-token', 'x-csrf-token');
}

Mi resultado parcial: En este punto, angular envía una cookie con cada solicitud (GET y POST sin discriminación) con el jsessionid y el x-csrf-token de esta manera:

POST /app/business-objects/business-objects-type HTTP/1.1
Host: localhost:8040
Connection: keep-alive
Content-Length: 26
Pragma: no-cache
Cache-Control: no-cache
Authorization: Basic ZG1hZG1pbjphZG1pbg==
Origin: http://localhost:4200
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36
Content-Type: application/json
Accept: application/json
Referer: http://localhost:4200/page
Cookie: JSESSIONID=B874C9A170EFC12BEB0EDD4266896F2A; x-csrf-token=0717876e-f402-4a1c-a31a-2d60e48509d3

Mis preguntas de mil millones de dólares:

¿Cómo y dónde accedo al token x-csrf y cómo lo agrego a mis solicitudes?Que haceCookieXSRFStrategy('x-csrf-token', 'x-csrf-token'); exactamente hacer. No me gusta la sensación de blackbox / entiendo la forma en que los documentos lo explicaron. ¿Puedo acceder para obtener datos?

Antes de enviar una solicitud HTTP, la estrategia CookieXSRFS busca una cookie llamada XSRF-TOKEN y establece un encabezado llamado X-XSRF-TOKEN con el valor de esa cookie.

No establece el encabezado en mi caso ... pero ¿por qué?

En este momento estoy enviando la cookie al backend con el sessionid y el token csrf, pero ¿qué la envía? La estrategia CookieXSRFS o el indicador 'withCredentials'.

Por favor no responda con una frase como "document.cookie". Los datos son inútiles sin sus metadatos.

Respuestas a la pregunta(2)

Su respuesta a la pregunta