js httpClient

agnusdei·2023년 10월 17일
0

@Injectable({
  providedIn: 'root',
})
export class HttpService {
  private baseUrl?: string = `${process.env['NX_SERVER_HOST']}`;

  constructor(private readonly httpClient: HttpClient) {}

  get<T>(url: string, option?: HttpServiceOptions) {
    return this.httpClient.get<T>(`${this.baseUrl}/${url}`, { withCredentials: true, ...option }).pipe(share());
  }

withCredentials는 웹 요청을 보낼 때 사용되는 XMLHttpRequest 또는 Fetch API와 관련된 옵션 중 하나입니다. 이 옵션은 웹 브라우저에서 크로스-오리진 요청을 보낼 때 쿠키, HTTP 인증 및 기타 인증 정보를 함께 보낼지 여부를 제어하는 데 사용됩니다.

보통, 브라우저 보안 정책에 따라 다른 도메인으로 HTTP 요청을 보낼 때, 쿠키 및 인증 정보는 함께 보내지지 않습니다. 이것은 보안상의 이유로 기본 동작입니다. 그러나 때로는 다른 도메인으로 요청을 보낼 때도 쿠키나 인증 정보를 함께 보내야 할 수 있습니다. 이 때 withCredentials를 사용하여 설정할 수 있습니다.

예제 코드에서 withCredentials: true는 HTTP GET 요청을 보낼 때 요청에 대해 인증 쿠키나 다른 인증 정보를 함께 보낼 것을 의미합니다. 이것은 웹 애플리케이션에서 사용자 인증이나 세션 관리와 같은 기능을 구현할 때 유용할 수 있습니다.

주요 사용 사례:
1. 세션 관리: 웹 애플리케이션이 로그인 상태를 유지하고, 사용자 세션을 식별하기 위해 쿠키를 사용할 때 withCredentials를 true로 설정합니다.
2. 크로스-도메인 요청: 다른 도메인의 서버로 요청을 보내는 경우, 서버에서 인증 정보를 확인하려면 withCredentials를 true로 설정해야 합니다.

다음은 Fetch API를 사용한 간단한 예제입니다:

fetch('https://example.com/api/data', {
  method: 'GET',
  credentials: 'include', // 'include'으로 설정하여 withCredentials를 활성화
}).then(response => {
  // 응답 처리
}).catch(error => {
  // 오류 처리
});

요약하면, withCredentials는 브라우저에서 HTTP 요청을 처리할 때, 인증 정보와 관련된 설정을 제어하는 중요한 옵션 중 하나입니다.

0개의 댓글