User-Agent란?

2026. 8. 17. 18:05·Frontend/JavaScript

User-Agent란?

User-Agent란?

User-Agent란?

User-Agent는 클라이언트가 HTTP 요청을 보낼 때 자신의 브라우저, 운영체제 등의 정보를 서버에 전달하는 HTTP 요청 header 이다.

브라우저가 서버에 요청을 보낸다면 다음과 같은 정보를 보내게된다.

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)
AppleWebKit/537.36 Chrome/140.0.0.0 Safari/537.36

서버는 이 값을 통해 사용자가 어떤 브라우저와 운영체제를 사용 중인지 대략적으로 파악할 수 있다.

User-Agent를 사용하는 이유

과거에는 브라우저마다 지원하는 기능이나 동작 방식의 차이가 컸기 때문에, User-Agent를 확인해 브라우저별로 다른 코드를 실행할 수 있었다.

if (navigator.userAgent.includes("Chrome")) {
  // Chrome에서 실행할 코드
} else if (navigator.userAgent.includes("Safari")) {
  // Safari에서 실행할 코드
}

User-Agent 방식으로 구분/처리할 수 있는 것은 아래와 같다.

  • 사용 중인 브라우저
  • 운영체제
  • 모바일 또는 데스크톱 환경
  • 특정 브라우저에 대한 예외 처리

User-Agent Detection의 문제점

User-Agent를 이용한 방식은 "Safari를 사용하고 있으니 이 기능은 지원하지 않을 것이다." 라는 결론을 가지게 된다.

문제는 같은 브라우저라도 버전에 따라 지원하는 기능이 다를 수 있다는 점이다. 게다가 User-Agent 문자열은 얼마든지 변경하거나 조작할 수 있고, 최근에는 개인정보 보호를 이유로 브라우저가 노출하는 정보 자체가 점점 제한되고 있다.

결국 브라우저 종류만 보고 기능 지원 여부를 추측하는 것보다, 필요한 기능을 실제로 사용할 수 있는지 직접 확인하는 방식이 더 안전하다.

Feature Detection이란?

Feature Detection은 브라우저의 종류를 확인하는 대신, 특정 기능을 실제로 지원하는지를 확인하는 방식이다.

예를 들어 위치 정보 기능을 사용하려면 다음과 같이 확인할 수 있다.

if ("geolocation" in navigator) {
// 위치 정보 기능 사용
} else {
// 지원하지 않을 경우 대체 처리
}

두 방식은 다음과 같은 차이를 가지고 있다.

  • User-Agent Detection: "이 브라우저니까 이 기능이 될 것이다."
  • Feature Detection: "이 기능을 실제로 지원하는가?"

이 방식은 브라우저 버전이 바뀌거나 새로운 브라우저가 등장해도 상대적으로 안정적으로 대응할 수 있다는 장점이 있다.

결론

현대 웹 개발에서는 User-Agent만으로 브라우저별 코드를 분기하기보다, 기능 차이는 Feature Detection으로 기능차이를 구별한다.

반응형

'Frontend > JavaScript' 카테고리의 다른 글

이벤트 루프  (2) 2026.01.14
Node에서 플러그인 이용해서 절대 경로 설정해주기  (2) 2025.01.05
Object.assign vs Spread Syntax (...)  (2) 2024.11.20
Web 3D 그래픽스 (HTML Canvas)  (1) 2024.07.14
자바스크립트 javascript 2진수 8진수 16진수 변환  (1) 2021.10.08
'Frontend/JavaScript' 카테고리의 다른 글
  • 이벤트 루프
  • Node에서 플러그인 이용해서 절대 경로 설정해주기
  • Object.assign vs Spread Syntax (...)
  • Web 3D 그래픽스 (HTML Canvas)
WHITE_FROST
WHITE_FROST
개발공부리뷰블로그
  • WHITE_FROST
    하얀하얀IT
    WHITE_FROST
  • 전체
    오늘
    어제
    • 분류 전체보기 (138)
      • Infra (5)
      • Project & Troubleshooting (14)
        • Troubleshooting (7)
        • Dev Tools (4)
      • Frontend (30)
        • Next.js (9)
        • React (13)
        • TypeScript (2)
        • JavaScript (6)
      • Mobile (17)
        • React Native (16)
        • Android (1)
      • Backend & Data (7)
        • Database (3)
        • Java (1)
        • Python (2)
        • Design Pattern (1)
      • AI (7)
        • Models & API (1)
        • AI Notes (6)
        • AI Tools (0)
        • Local AI (0)
        • Concepts (0)
      • Problem Solving (52)
        • Algorithm Notes (6)
        • Algorithm Practice (46)
      • Growth Log (9)
        • Study Log (6)
        • Tips (0)
        • Etc (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 미디어로그
    • 위치로그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Ai
    reactnative
    코테
    Next.js
    백준
    React-Native cli
    java
    d1
    오블완
    알고리즘
    Expo
    react
    ReactHook
    Python
    프로그래머스
    mongodb cloud
    ios
    boj
    error
    D2
    react-native-maps
    리액트네이티브
    SWEA
    hooks
    Claude
    javascript
    React Hooks
    react-native
    코딩테스트
    티스토리챌린지
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
WHITE_FROST
User-Agent란?
상단으로

티스토리툴바