기존 번들 서비스의 URL Fetch

이 페이지에서는 App Engine 애플리케이션이 URL 가져오기 서비스를 사용하여 HTTP 및 HTTPS 요청을 수행하고 응답을 수신하는 방법을 설명합니다. App Engine 애플리케이션에서 HTTP 및 HTTPS 요청을 수행하는 방법을 보여주는 코드 샘플은 HTTP(S) 요청 실행을 참조하세요. urlfetch 패키지의 콘텐츠를 보려면 urlfetch 패키지 참조를 확인하세요.

요청

App Engine은 URL Fetch 서비스를 사용하여 아웃바운드 요청을 수행합니다. Go에서 urlfetch 패키지는 App Engine의 인프라를 사용하여 요청을 수행하는 http.RoundTripper 인터페이스의 구현인 urlfetch.Transport를 제공합니다.

요청 프로토콜

애플리케이션은 HTTP 또는 HTTPS를 사용하여 URL을 가져올 수 있습니다. 사용되는 프로토콜은 대상 URL의 프로토콜에 따라 유추됩니다.

가져올 URL은 다음 범위의 포트 번호를 사용할 수 있습니다.

  • 80-90
  • 440-450
  • 1024-65535

포트가 URL에 명시되지 않은 경우 프로토콜의 기본 포트가 사용됩니다. HTTP 요청은 포트 80에서, HTTPS 요청은 포트 443에서 수행됩니다.

요청 메서드

URL Fetch 서비스를 통해 요청을 수행하는 경우 다음과 같은 HTTP 메서드를 사용할 수 있습니다.

  • GET
  • POST
  • PUT
  • HEAD
  • DELETE
  • PATCH

요청은 HTTP 헤더를 포함할 수 있으며 POST, PUT, PATCH 요청의 경우에는 페이로드를 포함할 수 있습니다.

요청에 프록시 사용

URL Fetch 서비스는 HTTP/1.1 호환 프록시를 사용하여 결과를 가져옵니다.

애플리케이션에서 요청 무한 반복이 발생할 우려가 있으므로 요청 핸들러가 자신의 URL을 가져오는 것은 금지되어 있습니다. 그러나 다른 방법으로도 무한 반복이 발생할 수 있으므로, 애플리케이션이 사용자가 제공한 URL에 대한 요청을 가져올 수 있는 경우에는 특히 주의가 필요합니다.

요청 헤더

애플리케이션은 발신 요청에 HTTP 헤더를 설정할 수 있습니다.

HTTP POST 요청을 보낼 때 Content-Type 헤더가 명시적으로 설정되어 있지 않으면 헤더는 x-www-form-urlencoded로 설정됩니다. 이 콘텐츠 유형은 웹 양식에 사용됩니다.

보안상의 이유로 다음 헤더는 애플리케이션에서 수정할 수 없습니다.

  • Content-Length
  • Host
  • Vary
  • Via
  • X-Appengine-Inbound-Appid
  • X-Forwarded-For
  • X-ProxyUser-IP

이러한 헤더는 App Engine에서 정확한 값으로 적절히 설정됩니다. 예를 들어 App Engine은 요청 데이터에서 Content-Length 헤더를 계산하여 요청에 추가한 후 전송합니다.

다음 헤더는 요청하는 앱의 애플리케이션 ID를 나타냅니다.

  • User-Agent. 이 헤더는 수정할 수 있지만 서버가 App Engine 요청을 식별할 수 있도록 App Engine이 식별자 문자열을 추가합니다. 추가되는 문자열은 "AppEngine-Google; (+http://code.google.com/appengine; appid: APPID)" 형식이며, 여기서 APPID는 앱의 식별자입니다.
  • X-Appengine-Inbound-Appid. 이 헤더는 수정할 수 없으며, URL Fetch 서비스를 통해 요청이 전송되는 경우 자동으로 추가됩니다.

요청 제한시간

요청의 기한 또는 제한 시간을 설정할 수 있습니다. 기본적으로 요청 제한 시간은 60초입니다. 최대 기한은 HTTP(S) 요청의 경우 60초, 태스크 큐 및 크론 작업 요청의 경우 60초입니다.

보안 연결 및 HTTPS

애플리케이션은 HTTPS로 보안 서버에 연결하여 안전하게 URL을 가져올 수 있습니다. 이렇게 하면 요청 및 응답 데이터가 암호화된 형식으로 네트워크를 통해 전송됩니다.

Go API에서 URL 가져오기 프록시는 기본적으로 연결 중인 호스트를 검증합니다. 이러한 동작에 따라 API는 HTTPS를 사용할 때 App Engine과 원격 호스트 사이의 중간자 공격을 감지할 수 있습니다.

응답

URL Fetch API를 사용하는 경우 URL Fetch 서비스는 응답, 코드, 헤더, 본문을 포함하여 모든 응답 데이터를 반환한다는 점에 주의하세요.

기본적으로 URL Fetch 서비스는 리디렉션 코드가 포함된 응답을 수신하면 해당 리디렉션을 따릅니다. 서비스는 최대 5개까지 리디렉션 응답을 따른 후 최종 리소스를 반환합니다.

개발 서버에서 URL 가져오기 사용

사용자 컴퓨터의 App Engine 개발 서버에서 애플리케이션이 실행되는 경우 URL Fetch 서비스에 대한 호출이 로컬로 처리됩니다. 개발 서버는 컴퓨터에서 인터넷 액세스에 사용 중인 모든 네트워크 구성을 통해 사용자 컴퓨터에서 직접 원격 호스트에 연결하여 URL을 가져옵니다.

URL을 가져오는 애플리케이션의 기능을 테스트할 때는 컴퓨터가 원격 호스트에 액세스할 수 있는지 확인해야 합니다.

URL Fetch의 할당량 및 한도

URL Fetch 서비스의 할당량에 대한 자세한 내용은 할당량을 참조하세요. 애플리케이션이 현재 사용 중인 할당량을 보려면 Google Cloud Console의 할당량 세부정보 페이지로 이동합니다.

할당량 세부정보 페이지로 이동

또한 URL Fetch 서비스를 사용할 때 다음과 같은 한도가 적용됩니다.

한도 용량
요청 크기 10MB
요청 헤더 크기 16KB(이 값은 헤더에 지정할 수 있는 URL의 최대 길이를 제한함)
응답 크기 32MB
최대 기한(요청 핸들러) 60초
최대 기한(작업 대기열 및 크론 작업 핸들러) 60초

다음 단계

HTTP(S) 요청 실행에서 코드 샘플을 실행하고 애플리케이션에서 요청을 수행하는 방법을 알아봅니다.