
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 |