невозможно получить заголовок set-cookie в Hativep скрипта Nativescript - PullRequest
0 голосов
/ 04 июня 2019

Я пытался получить заголовки http из класса HttpInterceptor. Когда я пытался войти в заголовки, set-cookie нет. Однако, когда я попытался свернуть URL-адрес, файл set-cookie присутствует.

Это мой класс HttpInterceptor, где я пытался получить доступ к заголовкам:

import { Injectable } from "@angular/core";
import { SessionService } from "../session/session.service";
import { HttpRequest, HttpHandler, HttpEvent, HttpErrorResponse } from "@angular/common/http";
import { Observable } from "rxjs";
import { tap } from "rxjs/operators";

@Injectable()
export class HttpRequestInterceptor {
  constructor(private sessionService: SessionService) {

  }

  private isCachable(req: HttpRequest<any>): boolean {
    if (req.method != 'GET' && req.method != 'OPTIONS') {
      return false; 
    }

    return true;
  }

  intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
    const successHandler = (response) => {
      // Intercept ecopayz successful form response.
      if (!this.isCachable(request) && response.headers && response.headers.get('x-redirect-url')) {
        window.location = response.headers.get('x-redirect-url');
      }

      var headers = response.headers;
      if (headers) {
        headers.headers.forEach((value, key) => {
          console.log(key, value);
        });
      }
    };

    const errorHandler = (error): any => {
      if (error instanceof HttpErrorResponse ) {
        if (error.status === 401) {
          this.sessionService.clearSession();
        }
      }
    };

    request = request.clone({
      withCredentials: true
    });

    return next.handle(request).pipe(
      tap(successHandler, errorHandler),
    );
  }
}

PS: заголовок set-cookie имеет флаг HttpOnly.

Почему это так?

Спасибо!

1 Ответ

0 голосов
/ 04 июня 2019
get(url: string, options: {
        headers?: HttpHeaders | {
            [header: string]: string | string[];
        };
        observe: 'response';
        params?: HttpParams | {
            [param: string]: string | string[];
        };
        reportProgress?: boolean;
        responseType: 'blob';
        withCredentials?: boolean;
    }): Observable<HttpResponse<Blob>>;

Это файл определения типа http.

Для начала, вам нужно добавить «Наблюдение:« Ответ »к опции.

Это функция загрузки файлов, но просто посмотрите на код.

Именно эта опция -> наблюдать: «ответ»

 public download(url: string) {
    return this.httpClient
      .get(url, {
        headers: new HttpHeaders({
          'Accept': '*/*;',
          'Content-Type': 'application/octet-binary'
        }),
        responseType: 'blob',
        observe: 'response'
      });
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...