XMLHttpRequest
XMLHttpRequest
(XHR) 객체는 서버와 상호작용하기 위하여 사용됩니다. 전체 페이지의 새로고침없이도 URL 로부터 데이터를 받아올 수 있습니다. 이는 웹 페이지가 사용자가 하고 있는 것을 방해하지 않으면서 페이지의 일부를 업데이트할 수 있도록 해줍니다. XMLHttpRequest
는 AJAX 프로그래밍에 주로 사용됩니다.
XMLHttpRequest
는 이름으로만 봐서는 XML 만 받아올 수 있을 것 같아 보이지만, 모든 종류의 데이터를 받아오는데 사용할 수 있습니다. 또한 HTTP 이외의 프로토콜도 지원합니다(file
과 ftp
포함).
통신을 통해 서버로부터 이벤트나 메시지 데이터를 받아야 한다면, EventSource
를 통한 server-sent events 사용을 고려하세요. 완전 양방향 통신을 해야 한다면 웹 소켓이 더 나은 선택일 수 있습니다.
생성자
XMLHttpRequest()
- 생성자는 XMLHttpRequest 를 초기화합니다. 다른 모든 메소드 호출이전에 호출되어야 합니다.
속성
이 인터페이스는 XMLHttpRequestEventTarget
과 EventTarget
의 속성도 상속합니다.
XMLHttpRequest.onreadystatechange
readyState
어트리뷰트가 변경될때마다 호출되는EventHandler
입니다.XMLHttpRequest.readyState
Read only- 요청의 상태를
unsigned short
로 반환합니다. XMLHttpRequest.response
Read only- 응답 엔티티 바디를 갖는하는
XMLHttpRequest.responseType
의 값에 따라ArrayBuffer
,Blob
,Document
, JavaScript 객체, 또는DOMString
을 반환합니다. XMLHttpRequest.responseText
Read only- 요청에 대한 응답을 텍스트로 갖는
DOMString
을 반환합니다. 요청이 성공하지 못했거나 아직 전송되지 않았을 경우null
을 반환합니다. XMLHttpRequest.responseType
- 응답 타입을 정의하는 열거형 값입니다.
XMLHttpRequest.responseURL
Read only- 응답의 연속된 URL 을 반환합니다. URL 이 null 인 경우 빈 문자열을 반환합니다.
XMLHttpRequest.responseXML
Read only- 요청에 대한 응답을 갖는
Document
를 반환합니다. 요청이 성공하지 못했거나, 아직 전송되지 않았거나, XML 또는 HTML 로 파싱할 수 없는 경우null
을 반환합니다. workers 에서는 사용이 불가합니다. XMLHttpRequest.status
Read only- 요청의 응답 상태를 갖는
unsigned short
를 반환합니다. XMLHttpRequest.statusText
Read only- HTTP 서버에 의해 반환된 응답 문자열을 갖는
DOMString
을 반환합니다.XMLHTTPRequest.status
와는 다르게, 응답 메시지의 전체 텍스트를 갖습니다(예, "200 OK
").
노트: HTTP/2 명세(8.1.2.4 Response Pseudo-Header Fields)에 따르면, HTTP/2 는 HTTP/1.1 상태 라인에 포함된 버전이나 원인 문구를 전달하는 방법을 정의하지 않습니다.
XMLHttpRequest.timeout
- 요청이 자동으로 종료될때까지 걸린 시간을 밀리초 단위로 나타내는
unsigned long
입니다. XMLHttpRequestEventTarget.ontimeout
- 요청 시간 초과때마다 호출되는
EventHandler
입니다. XMLHttpRequest.upload
Read only- 업로드 과정을 나타내는
XMLHttpRequestUpload
입니다. XMLHttpRequest.withCredentials
- 사이트 간
Access-Control
요청이 쿠키나 인증 헤더와 같은 자격 증명을 사용해야하는지 여부를 나타내는Boolean
입니다.
비표준 속성
XMLHttpRequest.channel
Read onlynsIChannel
입니다. 요청을 수행할 때 객체에 의해 사용된 채널입니다.XMLHttpRequest.mozAnon
Read only- Boolean 입니다. true 일 경우, 요청이 쿠키나 인증 헤더 없이 전송됩니다.
XMLHttpRequest.mozSystem
Read only- Boolean 입니다. true 일 경우, 요청에대해 동일 출처 정책(same origin policy)이 강제되지 않습니다.
XMLHttpRequest.mozBackgroundRequest
- Boolean 입니다. 객체가 백그라운드 서비스 요청을 나타내는지 여부를 표시합니다.
XMLHttpRequest.mozResponseArrayBuffer
안씀 Gecko 6 Read onlyArrayBuffer
. 요청에 대한 응답입니다. 타입이 지정된 JavaScript 배열입니다.XMLHttpRequest.multipart
안씀 Gecko 22- This Gecko-only feature, a boolean, was removed in Firefox/Gecko 22.
대신 Server-Sent Events, 웹 소켓, 또는 프로그레스 이벤트의responseText
를 사용하시기 바랍니다.
이벤트 핸들러
XMLHttpRequest
인스턴스의 속성으로써 onreadystatechange
는 모든 브라우저에서 지원됩니다.
그 이후, 많은 부가적인 이벤트 핸들러가 다양한 브라우저에서 구현되었습니다(onload
, onerror
, onprogress
, 등등.). XMLHttpRequest 사용하기 글을 확인하세요.
Firefox 를 포함해, 더 최신 브라우저는 on*
속성을 핸들러 함수로 설정하는것 뿐만 아니라 표준 addEventListener()
API 를 통해 XMLHttpRequest
이벤트 리스닝도 지원합니다.
메소드
XMLHttpRequest.abort()
- 이미 전송된 요청을 중지합니다.
XMLHttpRequest.getAllResponseHeaders()
- 모든 응답 헤더를 CRLF 로 구분한 문자열로 반환합니다. 응답을 받지 않은 경우
null
입니다. XMLHttpRequest.getResponseHeader()
- 지정한 헤더의 텍스트를 갖는 문자열을 반환합니다. 응답을 아직 받지 못했거나 응답에 헤더가 존재하지 않을 경우
null
입니다. XMLHttpRequest.open()
- 요청을 초기화합니다. 이 메소드는 네이티브 코드로부터의 요청을 초기화하기 위해 JavaScript 코드에 의해 사용됩니다. 대신
openRequest()
를 사용하세요. XMLHttpRequest.overrideMimeType()
- 서버에의해 반환된 MIME 타입을 오버라이드합니다.
XMLHttpRequest.send()
- 요청을 보냅니다. 요청이 비동기인 경우(기본값), 이 메소드는 요청이 보내진 즉시 반환합니다.
XMLHttpRequest.setRequestHeader()
- HTTP 요청 헤더의 값을 설정합니다.
open()
후,send()
전에setRequestHeader()
를 호출해야합니다.
비표준 메소드
XMLHttpRequest.init()
- C++ 코드에서 사용할 객체를 초기화합니다.
주의: 이 메소드는 JavaScript 에서 호출되면 안 됩니다.
XMLHttpRequest.openRequest()
- 요청을 초기화합니다. 이 메소드는 JavaScript 코부로부터의 요청을 초기화하기위해 네이티브 코드에서 사용됩니다. 대신
open()
을 사용하세요.open()
에 대한 문서를 확인하세요. XMLHttpRequest.sendAsBinary()
- 바이너리 데이터를 보내는
send()
메소드의 다른 방식입니다.
Events
abort
- 예를 들어 프로그램이
XMLHttpRequest.abort()
를 호출해서 요청이 중단되면 발생한다.onabort
속성을 통해서도 가능하다. error
- 요청에 에러가 생기면 발생한다.
onerror
속성을 통해서도 가능하다. load
XMLHttpRequest
처리 과정이 성공적으로 완료되면 발생한다.onload
속성을 통해서도 가능하다.loadend
- 요청이 성공이든 (
load
다음) 실패든 (abort
또는error
다음) 완료되면 발생한다.
onloadend
속성을 통해서도 가능하다. loadstart
- 요청이 데이터를 받기 시작하면 발생한다.
onloadstart
속성을 통해서도 가능하다. progress
- 요청이 데이터를 받는 동안 주기적으로 발생한다.
onprogress
속성을 통해서도 가능하다.
명세
명세 | 상태 | 코멘트 |
---|---|---|
XMLHttpRequest | Living Standard | Live standard, latest version |
브라우저 호환성
BCD tables only load in the browser
함께 보기
XMLSerializer
: DOM 트리를 XML 로 직렬화XMLHttpRequest
를 다루는 MDN 튜토리얼:- HTML5 Rocks — New Tricks in XMLHttpRequest2