항목 | XML | JSON |
---|---|---|
구조 | 태그 기반 | 키-값 기반 |
가독성 | 복잡함 | 간결함 |
용량 | 큼 | 작음 |
사용성 | 오래된 시스템에서 사용 | 현대 웹/앱에서 표준 |
예시 | <name>Alex</name> | { "name": "Alex" } |
AJAX (Asynchronous JavaScript And XML)
→ 페이지 새로고침 없이 서버와 데이터 주고받기 위한 기술
비동기 요청
✅ 중요: 데이터를 백그라운드에서 요청하고, 완료되면 JS로 처리
const req = new XMLHttpRequest();
req.onload = () => {
// 응답이 왔을 때 처리
const data = JSON.parse(req.responseText);
console.log(data);
};
req.open("GET", "<https://example.com/data.json>", true); // true = 비동기
req.send();
속성 | 설명 |
---|---|
onload | 요청 성공 시 실행 |
onerror | 요청 실패 시 실행 |
onreadystatechange | 상태 변화 감지 시 실행 (readyState 와 status 함께 사용) |
onprogress | 다운로드 중 로딩 상태 확인 |
onabort | 요청이 중단되었을 때 실행 |
req.onerror = () => {
console.error("서버 요청 실패");
};
항목 | XMLHttpRequest | fetch() | $.ajax() |
---|---|---|---|
문법 | 복잡 | 간결 | 간결 |
지원 | 전 브라우저 | IE 미지원 | jQuery 필요 |
비동기 처리 | 콜백 기반 | Promise 기반 | 콜백 기반 |
예외 처리 | try-catch 불편 | try-catch 가능 | 에러 콜백 분리 |
헤더 설정 | 수동 | 간편 | 옵션으로 처리 |
const url = URL.createObjectURL(blob); // 가상의 URL 생성
document.querySelector("img").src = url;
URL.createObjectURL(blob)
을 사용해 가상 주소(URL) 생성img.src
에 이 URL을 넣어 표시video.src = URL.createObjectURL(videoBlob);
📌 왜 필요하지?
사용자 정보 탈취, 세션 공격 방지 (예: 은행 로그인 상태에서 다른 사이트 접근 차단)
Access-Control-Allow-Origin: <https://example.com>
📌 왜 필요하지?
신뢰된 요청만 허용해서 보안은 유지하면서, 데이터 공유는 가능하게 하기위해
비동기
기술이다!XMLHttpRequest
, fetch
, $.ajax()
는 모두 AJAX 방식이지만 문법과 스타일 차이다SOP
는 다른 오리진의 접근을 차단하는 브라우저의 보안 정책이다CORS
는 SOP
에 의해 막힌 요청을 가능하게 해준다