xmlhttprequest 개요

본래 microsoft 설계 xmlhttprequest를 허용 인터넷 익스플로러 (예)를로드 xml 문서에서 자바 스크립트입니다. 비록 그것이 xml의 이름, xmlhttprequest 실제로는 일반 http 클라이언트를위한 자바 스크립트입니다. 함께 것으로, 자바 스크립트를 얻을 수 있는지와 게시물을 요청합니다. (예를 게시물을 요청, 데이터를 서버로 보낼 수있는 형식은 사용자가 선택한있습니다.) 의 주요 한계를 xmlhttprequest는 이유로 브라우저 보안 샌드 박스입니다. 할 수 있도록 전용 http (들)를 요청 (파일 링, 예를 들어,이 작동하지 않습니다), 그리고 할 수 있도록 요청을 유일한를 동일한 도메인으로하여 현재로드 페이지입니다.

  

이 보안 제한 xmlhttprequest하지 제한하는 방법으로 사용하실 수있습니다 것이지만 무역 - 오프에 추가 된 보안이 잘 치가 그것입니다. 대부분의 공격 자바 스크립트 애플 리케이션 센터를 중심 주사 악성 코드를 웹 페이지가있습니다. xmlhttprequest 허용되는 경우를 요청하여 모든 웹 사이트, 주요 플레이어에 이러한 공격이 될 것이라고합니다. 이러한 잠재적인 문제의 보안 샌드 박스가 줄어 듭니다. 또한 프로그래밍 모델을 단순화하기 때문에 자바 스크립트 코드를 암시적으로 신뢰할 xmlhttprequest에서 모든 데이터를로드합니다. 그것 때문에 신뢰할 수있는 데이터가 새 데이터는 것처럼 안전한으로 페이지가 로드된의 초기 페이지입니다.

는 사실에도 불구하고 xmlhttprequest를 제공 전용의 작은 api와 그냥 소수의 방법과 속성, 그것은 그 차이점 브라우저입니다. 이러한 차이는 주로 이벤트 처리와 객체 인스턴스화 (이 즉, xmlhttprequest가 실제로 an activex 개체), 그래서 그들은 하드를 해결하지 않습니다. 에서 다음과 같은 개요를 xmlhttprequest 것이든, 모질라 구문을 xmlhttprequest 인스턴스화하는 데 사용됩니다. 의 예제를 실행하려는 경우 즉, 필요를 대체할 새로운 xmlhttprequest (); 를 사용하여 새로운 activexobject ( "msxml2.xmlhttp.3.0"); 이나 전체 크로스 - 브라우저를 인스턴스화 방법을 보여에서 "크로스 - 브라우저 xmlhttprequest "섹션은이 문서입니다.

xmlhttprequest가가 장 - 사용 방법에 대한 아약스 통신을하기 때문에 두 개의 독특한 기능을 제공합니다. 의 첫 번째 기능을 제공하지 않고 새로운 콘텐츠를 로드할 수있는 기능이 변경되는 콘텐츠를 어떤 방식 으로든, 7356 것이 매우 쉽습에 맞게 아약스을 귀하의 정상적인 발전 패턴입니다. 두 번째 기능을 사용하면 자바 스크립트를 만들 동기를 호출합니다. a 동기식 호출을 중지 모든 것이 완료될 때까지 다른 작업을하는 동안이 아니라 일반적으로 사용하는 옵션이있는 것이 유용할 수있는 현재의 요청이있는 경우 더 이상 작업을 찍하기 전에 완료해야합니다.

xmlhttprequest : : 오픈 ()

의 열기 방법을 사용하여 설정하는 요청 유형 (얻을, 게시, 배치, 또는 propfind), 페이지의 요청되는, 그리고 비동기 여부를 호출됩니다. 사용자 이름과 비밀 번호에 대한 인증을 수도있습니다 옵션을 통과합니다. 하십시오 상대적인 경로가 될 수있습니다 (예 page.html) 또는 완전한 하나를 포함하는 서버의 주소 (예 : http://blog.joshuaeichorn.com/page.html)입니다. 기본적인 방법을 서명이 :

열기 (종류, 표시 isasync, 사용자 이름, 비밀 번호)

에있는 자바 스크립트 환경, 보안 제한이 제자리입니다. 이러한 보안 제한이 원인이 열려 방법을 던질 예외 경우에의이 아닌 다른 도메인의 현재 페이지입니다. 다음 예제를 사용 열기를 설정하는 동기를 얻을 요청을 index.html :

한 변수 req = 새 xmlhttprequest ();
이 req.open ( '얻기', 'index.html', 거짓);
3 req.send (널);
4면 (req.status == 200)
5 알림 (req.responsetext);

xmlhttprequest : : 보내기 ()

를 보내는 방법을 사용하면 연결을 지정하십시오 오픈합니다. 경우에 요청이 비동기를 호출하면 즉시 반환합니다; 그렇지 않으면 더 이상 실행에 대한 호출이 차단 다운로드한 전까지는 페이지가되었습니다. 경우에 요청 유형이 게시물의 페이로드의 본문으로 전송됩니다 서버에 대한 요청이 전송됩니다. 이 메소드 서명은 :

보내기 (페이로드)

게시물을 요청하면됩니다을 설정할 필요가 콘텐츠 - 형식 헤더입니다. 이 방법을 사용하여 서버를 알고있는 업로드된 콘텐츠가 무엇을해야합니다. 을 사용하여 양식을 모방 보내기 http 게시물을 설정한 경우가 콘텐츠 유형을 응용 프로그램 / x - www - 양식 - urlencoded입니다. urlencoded에 표시되는 데이터는 동일 포맷하십시오 이후에 "?" . 이 인코딩을 확인하실 수있습니다의 예입 양식을 설정하여 데이터를 만들어 그 방법을 얻을있습니다. 다음의 예제를 보여줍니다 동기식 포스트가 요청을 index.php입니다 urlencoded 페이로드를 전송합니다. 만약 index.php를 포함 <? php var_dump ($ _post); ? >를 볼 수있습니다 제출된 데이터가 번역을 하듯 그것은 정상적인 형태의 경고 :

한 변수 req = 새 xmlhttprequest ();
이 req.open ( '게시물', 'index.php', 거짓);
3 req.setrequestheader ( '콘텐츠 - 종류',
4 '응용 프로그램 / x - www - 양식 - urlencoded; 문자 집합 =- - 8; ');
5 req.send ( '안녕하세요 = 세계 & xmlhttprequest = 테스트');
6면 (req.status == 200)
7 알림 (req.responsetext);

xmlhttprequest : : setrequestheader ()

서로 다른 경우가 많다는 요청을 설정하는 헤더에 유용할 수있습니다. 가 장 일반적인 사용을 setrequestheader ()가를 설정하는 내용 - 타입, 있기 때문에 대부분의 웹 애플 리케이션을 이미 알고 대처하는 방법을 특정 유형과 같은 urlencoded입니다. 가 setrequestheader 방법 서명이 걸린다 2 개의 매개 변수 :의 헤더를 설정 및 해당 값 :

setrequestheader (헤더, 값)

xmlhttprequest 보내기를 사용하여 전송하기 때문에 요청이 동일한 표준 헤더를 포함한 쿠키 헤더 및 인증 헤더를로서 정상적인 브라우저 요청에 헤더 이름은 보통의 이름은 헤더가 할 재정의합니다. 이외에 우선하는 기본 헤더를 setrequestheader 유용에 대한 설정을 사용자 정의, 응용 프로그램 - 특정 헤더가있습니다. 사용자 정의 헤더는 일반적으로 접두사와 함께 x -로 구분할 표준 것들입니다. 다음 예제는이있는 동기를 얻을 요청을 추가 헤더라고 불리는 x - foo을 test.php입니다. 만약 test.php를 포함 <? php var_dump ($ _server); ? >가 표시됩니다 제출된 헤더의 경고 :

한 변수 req = 새 xmlhttprequest ();
이 req.open ( '얻기', 'test.php', 거짓);
3 req.setrequestheader ( 'x - foo', '바');
4 req.send (널);
5
6면 (req.status == 200)
7 알림 (req.responsetext);

xmlhttprequest : : getresponseheader ()와 getallresponseheaders ()

가 getresponseheader 방법을 사용하면 하나의 헤더의 응답을 받으려면; 이것은 모든 필요한 때 특히 유용는 헤더와 같은 콘텐츠 - 종류; 참고로 지정한 헤더는 케이스 - 구분합니다. 이 메소드 서명은 다음과 같습니다 :

getresponseheader (헤더)

getallresponseheaders을 모두 반환 헤더의 응답을 단일 문자열; 이것은 디버깅을 위해 유용하거나 검색하는 값. 다음 예제는이있는 동기를 얻을 요청을 호출할. 이 클라이언트에 대한 응답을 수신하면, 콘텐츠 - 종류는 경고를하고 헤더를 모두 경고 :

한 변수 req = 새 xmlhttprequest ();
이 req.open ( '얻기', '호출할', 거짓);
3 req.send (널);
4
5면 (req.status == 200) (
6 알림 (req.getresponseheader ( '콘텐츠 - 종류'));
7 알림 (req.getallresponseheaders ()); 8)

기타 xmlhttprequest 방법

모든 브라우저가 구현을 중단할 () 메소드를 사용하는 비동기 요청을 취소하려면이 - 진행합니다. (이것은 그림의 예는에서 "보내는 비동기 요청"절이 문서에 나와있습니다.) 모질라 - 기반 브라우저도 제공하는 일부 여분의 방법에 대한 기의 기본적인 api; 예를 들어, addeventlistener ()와 removeeventlistener ()을 제공하는 방식으로 잡을 상태 이벤트에 대한 * 등록 정보를 사용하지 않고있습니다. 도있다 overridemimetype () 메소드를 해주능한를 강제는 콘텐츠 - 유형으로 텍스트 / xml 있도록된다 dom 문서를 구문 분석에 신고하지 않는 경우에도 서버에서 같은합니다. 모질라 - 구체적인 방법은 특정 상황에서 유용하지만, 대부분의 경우, 체류해야하기 때문에 거리가 모든 브라우저를 지원하지 않습니다 그들입니다.

xmlhttprequest 등록

xmlhttprequest을 제공하는 번호의 등록 정보 또는 결과에 대한 정보를 제공하는가 요청을합니다. 대부분의 속성은 자기 - 설명; 단순히 값과 행동에 그것을 읽을 수있습니다. 에 * 속성은 이벤트 처리기에 의해 사용되는 지정하는 기능을합니다. 모든 속성 목록은 다음과 같습니다 :

참고 사항

모질라을 재설정 이벤트 처리기 등 onreadystatechange, 이후에 요청이 완료, 그래서 그들을 다시 설정해야하는 경우 의사가 여러 통화와 동일한 개체입니다.

readystate 레퍼런스

다음과 같은 테이블에 표시의가능한 값은 readystate 변수입니다. 그것이 반환하는 개체의 현재 상태를 나타내는 숫자입니다. 각 요청은 진행 과정을 목록에 readystates

readystate 레벨
readystate 상태 코드 의 상태를 xmlhttprequest 객체
(0) 초기화 해당 개체가 만들어졌습니다하지만이 초기화되지 않았습니다. (의 열기 방법이 아니기라고합니다.)
(1) 로딩 해당 개체가 만들어졌습니다하지만 호출을 보낼 방법을가되지 않았습니다.
(2)로드 를 보내는 방법이라고하고 있지만 현재 상태와 헤더는 아직 사용할 수없습니다.
(3) 대화형 일부 데이터가 접수되었습니다. 호출 응답 및 responsetext 속성은이 상태를 얻으려면 일부 결과는 돌아가 오류를 완전히 사용할 수 있기 때문에 현재 상태 및 응답 헤더가없습니다.
(4) 완료 모든 데이터가 수신되었습니다과 완벽한 데이터는 응답과 responsetext 속성에서 사용할 수있습니다.


가 readystate 변수와 onreadystatechange 이벤트 처리기이 연결되어있는 이와 같은 방식으로 각각의 시간을 readystate 변수가 변경을 onreadystatechange 이벤트 처리기가 호출됩니다.

이것은 문서가 추가 캐럴 rudenberg
면책 조항 : 우리의 웹사이트가 포함되어있는 정보는이 문서에 대해 책임을지지 않습니다. 본 문서를 어떠한 방식 으로든 반영합니다 조회, 의견, 생각이나 신념의 기사를 디렉토리 직원입니다.

번역을 고지 :이 문서 "xmlhttprequest 개요"에 대한 자동 번역 서비스를 사용하여 번역했습니다. 우리가 진심을 끼쳐 드려 번역 오류가 발생했습니다. 이해에 감사드립니다.

Online: 511 users browsing the articles directory