Ajax는 최근 몇 년 동안 큰 인기를 얻었으며 Ajax의 핵심은 클라이언트 측 XMLHttpRequest 객체를 사용하는 XMLHttpRequest입니다. Ajax와 비교하여 서버측 XMLHTTP는 서버측에서 XMLHttpRequest 객체를 사용합니다. 서버측에서 비동기식 요청을 사용하는 것이 더 불편하긴 하지만, 서버측에서 HTTP 요청을 보낼 수 있는 컴포넌트이므로 알아두셔도 나쁠 것은 없습니다.
여기서는 ASP 환경에서 서버측 XMLHttpRequest를 사용하는 방법과 JScript를 데모 코드용 언어로 사용하는 방법에 대해 설명합니다. 따라서 ASP와 JScript에 대한 이해가 필요합니다.
서버 측 XMLHTTP는 일반적으로 원격 호스트에서 웹 페이지 또는 기타 콘텐츠를 얻는 데 사용됩니다. 뉴스 집계 시스템은 일반적으로 서버 측 XMLHTTP 개체를 사용하여 집계할 피드 콘텐츠를 얻은 다음 XMLDOM 개체를 사용하여 피드의 콘텐츠를 분석합니다. 뉴스 제목, 작성자, 내용 및 기타 정보를 피드하고 검색한 다음 데이터베이스에 저장한 다음 여러 데이터 소스의 뉴스를 함께 표시합니다. Catch Shrimp는 뉴스 수집기이지만 ASP로 작성되지는 않았습니다. :)
ASP에서는 다음 코드를 사용하여 ServerXMLHTTP 개체를 만들 수 있으며 이 개체는 서버 측에서 수행하는 모든 작업의 기초가 됩니다.
다음과 같이 코드 코드를 복사합니다.
var xmlhttp = new ActiveXObject(MSXML2.ServerXMLHTTP.5.0);
먼저 ServerXMLHTTP 개체의 더 유용한 메서드를 살펴보겠습니다.
1. abort 이 메소드는 XMLHTTP 요청을 취소하는 데 사용됩니다. XMLHTTP 객체가 비동기적으로 요청을 보내는 경우 일정 시간이 지나도 요청이 여전히 반환되지 않으면 이 메서드를 사용하여 요청을 취소할 수 있습니다.
2. getAllResponseHeaders 이 메소드의 반환 값은 문자열이며, 이는 요청 메소드, URI 및 프로토콜 버전 정보가 없는 HTTP 요청의 헤더에 해당합니다.
3. getResponseHeader 이 메소드는 지정된 헤더 정보를 얻는 데 사용됩니다. 더 유용한 방법은 반환된 데이터의 Content-Type, Referer 등을 얻는 것입니다.
4. open은 지정된 요청 방법, URI, 동기화 방법, 인증 정보 등을 사용하여 요청을 초기화합니다.
5. send는 HTTP 요청을 보내고 응답 데이터가 수신될 때까지 기다립니다. 요청이 동기 방식으로 전송되면 send 메서드는 호출된 후 즉시 반환되지 않고 요청이 완료될 때까지 기다립니다. 비동기식 메서드로 요청하면 즉시 반환됩니다. 또한 send 메소드에는 전송할 데이터를 나타내는 선택적 매개변수 본문이 있어 POST 메소드를 사용할 때 더 유용합니다.
6. setTimeout은 ServerXMLHTTP 개체의 네 가지 시간 초과(도메인 이름 확인, 서버에 연결, 데이터 전송 및 응답 수신)를 설정합니다. ServerXMLHTTP가 제 시간에 반환되지 않아 프로그램이 응답을 중지하는 것을 방지하기 위해 해당 시간 초과 기간을 설정하여 ServerXMLHTTP 개체를 제어할 수 있습니다.
7. setRequestHeader는 요청의 헤더를 설정합니다. 클라이언트 XMLHttpRequest에서는 일반적으로 요청의 데이터 유형을 설정하거나 요청 방법 등을 식별하는 데 사용됩니다. 예를 들어 jquery는 헤더 식별자 X-Request-With를 추가합니다. 서버가 해당 작업을 수행할 수 있도록 하기 위해 요청이 XMLHttpRequest 개체에서 발생했음을 나타냅니다.
8. waitForResponse 요청을 비동기적으로 보낼 때 이 메소드를 사용하여 요청 프로세스를 제어할 수 있습니다. 서버 측 스크립트에서는 클라이언트처럼 비동기 요청을 제어하기 위해 콜백 함수를 직접 사용할 수 없으며, 요청을 기다리기 위해 프로그램을 일정 시간 동안 절전 모드로 사용하는 해당 함수도 없습니다. 반환하면 이 방법을 사용하여 일정 시간 동안 기다릴 수 있습니다.
그 밖에도 getOption, setOption, setProxy 등의 다른 메소드도 있습니다. 이러한 메소드는 거의 사용되지 않으므로 여기서는 소개하지 않겠습니다. 더 알고 싶은 친구들은 MSDN을 참고하세요.
다음으로 ServerXMLHTTP 개체의 속성을 살펴보겠습니다.
1. onreadystatechange XMLHTTP 객체 상태가 변경될 때의 콜백 함수입니다. 이 속성은 비동기 작업의 기초를 마련하여 프로그램이 XMLHTTP 객체 상태를 쿼리하지 않고도 XMLHTTP 작업이 완료되었는지 여부를 알 수 있도록 합니다.
2. ReadyState XMLHTTP 객체 상태에는 0부터 4까지 각각 다음을 나타내는 5개의 값이 있습니다.
0 - 초기화되지 않음, 새 ActiveXObject(MSXML.ServerXMLHTTP.5.0)를 사용하여 방금 생성되었을 때의 개체 상태
1 - 로드 중입니다. 이때 open 메소드가 호출되었으나 send 메소드를 사용하여 데이터를 전송하지 않았습니다.
2 - 이미 로드되어 데이터 전송을 위해 send 메소드가 호출되었지만 아직 사용 가능한 응답 스트림이 없습니다.
3 - 데이터 상호작용 및 수신 이때 responseBody 및 responseText 속성을 사용하여 얻은 데이터의 일부를 얻을 수 있습니다.
4 - 요청을 완료하고 모든 데이터를 수신했습니다.
일반적으로 상태 4만 결정하면 됩니다. 이때 모든 데이터가 로드되었으며 responseBody 또는 responseText 속성을 사용하여 필요한 데이터를 얻을 수 있습니다.
3. 정상적인 상황에서는 200이어야 하는 상태 HTTP 응답 상태 코드입니다. 요청한 리소스가 없으면 404가 반환됩니다. 서버 오류 500 등이 있습니다.
4. statusText 200의 OK, 404의 Not Found 등 응답 상태 코드의 의미를 설명하는 데 사용되는 HTTP 응답 상태 텍스트
5. responseBody는 응답 데이터의 바이트 배열입니다. 이는 VBScript에서 직접 사용할 수 있지만 JScript에서 변환해야 합니다.
6. responseText는 텍스트 형식으로 응답 데이터를 얻습니다.
7. responseXML은 응답 데이터를 XMLDOM 개체로 반환합니다. 이는 요청된 데이터가 XML 문서인 경우 특히 유용합니다.
8. responseStream 응답 스트림 객체, 이 속성은 일반적으로 사용되지 않습니다.