415 지원되지 않는 미디어 유형 - 지원되지 않는 인코딩

<ph type="x-smartling-placeholder"></ph> 현재 Apigee Edge 문서를 보고 있습니다.
Apigee X 문서.
정보

증상

클라이언트 애플리케이션이 HTTP 상태 코드 415 Unsupported Media Type를 가져옵니다. 오류 코드 protocol.http.UnsupportedEncoding 를 API 호출에 대한 응답으로 반환합니다.

오류 메시지

클라이언트 애플리케이션은 다음과 같은 응답 코드를 받습니다.

HTTP/1.1 415 Unsupported Media Type

또한 아래와 유사한 오류 메시지가 표시될 수도 있습니다.

{
   "fault":{
      "faultstring":"Unsupported Encoding \"UTF-8\"",
      "detail":{
         "errorcode":"protocol.http.UnsupportedEncoding"
      }
   }
}

가능한 원인

이 오류는 Content-Encoding 헤더 값이 클라이언트가 Apigee로 보낸 HTTP 요청 또는 백엔드 서버에서 보낸 HTTP 응답입니다. Apigee는 다음을 포함하지 않습니다. 사양에 따라 Apigee에서 인코딩을 지원합니다. <ph type="x-smartling-placeholder"></ph> RFC 7231, 섹션 6.5.13: 415 지원되지 않는 미디어 유형.

<ph type="x-smartling-placeholder">

이 오류가 발생할 수 있는 원인은 다음과 같습니다.

원인 설명 다음에 관한 문제 해결 안내
요청에 지원되지 않는 인코딩이 사용되었습니다. 요청 헤더 Content-Encoding에 지원되지 않는 인코딩이 포함되어 있습니다. Apigee Edge입니다 에지 퍼블릭 및 프라이빗 클라우드 사용자
응답에 지원되지 않는 인코딩이 사용되었습니다. 백엔드 서버 응답 헤더 Content-Encoding에는 Apigee Edge에서 지원되지 않습니다. 에지 퍼블릭 및 프라이빗 클라우드 사용자

일반적인 진단 단계

오류를 진단하려면 다음 방법 중 하나를 사용하면 됩니다.

API 모니터링

<ph type="x-smartling-placeholder">

API 모니터링을 사용하여 오류를 진단하려면 다음 안내를 따르세요.

  1. <ph type="x-smartling-placeholder"></ph> Apigee Edge 계정에 로그인합니다.
  2. 문제를 조사하려는 조직으로 전환합니다.

    UI 조직 드롭다운
  3. 분석 > API 모니터링 > 조사 페이지를 엽니다.
  4. 오류가 관찰된 특정 기간을 선택합니다.
  5. 프록시 필터가 전체로 설정되어 있는지 확인합니다.
  6. 시간을 기준으로 결함 코드를 표시합니다.
  7. 아래와 같이 오류 코드가 protocol.http.UnsupportedEncoding인 셀을 선택합니다.

    오류 코드 셀 선택됨
  8. 오류 코드 protocol.http.UnsupportedEncoding에 관한 정보는 아래와 같이 표시됩니다.

  9. 로그 보기 를 클릭하고 415로 실패한 요청 중 하나를 펼칩니다. 오류:

  10. 로그 창에서 다음 세부정보를 확인합니다. <ph type="x-smartling-placeholder">
      </ph>
    • 결함 소스: apigee에서 오류가 반환되었음을 표시합니다. 또는 target.
    • 오류 코드: protocol.http.UnsupportedEncoding과 일치해야 합니다.
  11. 결함 소스apigee이면 요청이 Content-Encoding 헤더에 지원되지 않는 인코딩이 포함되어 있습니다.
  12. 오류 소스가 target이면 백엔드 서버가 응답에 Content-Encoding 헤더에 지원되지 않는 인코딩이 포함되어 있습니다.

추적 도구

<ph type="x-smartling-placeholder">

Trace 도구를 사용하여 오류를 진단하는 방법은 다음과 같습니다.

  1. 사용 trace 세션 및 다음 중 하나를 수행합니다. <ph type="x-smartling-placeholder">
      </ph>
    • 415 Unsupported Media Type 오류가 발생할 때까지 기다립니다.
    • 문제를 재현할 수 있는 경우 API를 호출하여 문제를 재현합니다. 오류 415 Unsupported Media Type
  2. Show all FlowInfos(모든 흐름 정보 표시)가 사용 설정되어 있는지 확인합니다.

    뷰 옵션 창, 모든 흐름 정보 표시
  3. 실패한 요청 중 하나를 선택하고 trace를 검토합니다.
  4. 추적의 여러 단계를 살펴보고 오류가 발생한 위치를 찾습니다.
  5. 오류는 일반적으로 대상으로 요청 전송됨 서버 단계를 실행합니다.

  6. 트레이스에서 오류 값을 확인합니다.

    위의 샘플 트레이스에서는 오류를 Unsupported Encoding "utf-8"로 보여줍니다. 이후 요청이 백엔드 서버로 전송된 후 Apigee에서 오류가 발생하며 이는 백엔드 서버가 응답 헤더 Content-Encoding"utf-8" 중 Apigee에서 지원되는 인코딩을 사용합니다.

  7. 트레이스의 AX (애널리틱스 데이터 기록됨) 단계로 이동하여 클릭합니다.
  8. 단계 세부정보오류 / 응답 헤더 섹션까지 아래로 스크롤합니다. 결정을 내리고 X-Apigee-fault-codeX-Apigee-fault-source의 값이 아래와 같이 표시됩니다.

  9. X-Apigee-fault-codeX-Apigee-fault-source의 값은 다음과 같이 표시됩니다. protocol.http.UnsupportedEncoding, target는 지원되지 않는 인코딩 값 "utf-8"이 응답 헤더 Content-Encoding에 있는 백엔드 서버에 저장됩니다.

    응답 헤더
    X-Apigee-fault-code protocol.http.UnsupportedEncoding
    X-Apigee-fault-source target

  10. 다음을 사용 중인지 확인합니다. <ph type="x-smartling-placeholder"></ph> 프록시 체이닝 즉, 대상 서버/대상 엔드포인트가 사용할 수 있습니다
    1. 이를 확인하려면 대상 서버에 요청 전송됨 단계로 돌아가세요. Curl 표시를 클릭합니다.

    2. 대상 서버로 전송된 요청의 curl 창이 열리면 여기에서 다음 작업을 수행할 수 있습니다. 대상 서버 호스트 별칭을 결정합니다.
    3. 대상 서버 호스트 별칭이 가상 호스트 별칭을 가리키는 경우 프록시 별칭입니다. 체이닝입니다. 이 경우 연결된 프록시에 대해 위의 모든 단계를 415 Unsupported Media Type 오류의 실제 원인을 확인해야 합니다.
    4. 대상 서버 호스트 별칭이 백엔드 서버를 가리키는 경우 백엔드 서버가 지원되지 않는 인코딩을 Apigee에 전달하고 있습니다.

Nginix 액세스 로그

<ph type="x-smartling-placeholder">

NGINX 액세스 로그를 사용하여 오류를 진단하려면 다음 안내를 따르세요.

  1. Private Cloud 사용자인 경우 NGINX 액세스 로그를 사용하여 HTTP 415 오류에 대한 주요 정보입니다.
  2. NGINX 액세스 로그를 확인합니다.

    /opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log

    <ph type="x-smartling-placeholder">
  3. 특정 기간 동안 415개의 오류 검색 (문제가 발생한 경우) 415로 여전히 실패하는 요청이 있는지 확인하세요.
  4. 일치하는 X-Apigee-fault-code 415 오류가 있는 경우 protocol.http.UnsupportedEncoding 값을 구한 다음 (X-Apigee-fault-source.)

    NGINX 액세스 로그의 샘플 415 오류:

    NGINX 액세스 로그의 위 샘플 항목에는 X- Apigee-fault-codeX-Apigee-fault-source:

    응답 헤더
    X-Apigee-fault-code protocol.http.Response405WithoutAllowHeader
    X-Apigee-fault-source MP

    X-Apigee-fault-source X-Apigee-fault-source 값이X-Apigee-fault-source 일 수도 있습니다.

원인: 요청에 지원되지 않는 인코딩이 있음

진단

  1. API를 사용하여 관찰된 오류의 결함 코드오류 소스 확인 에 설명된 대로 모니터링 또는 NGINX 액세스 로그 일반적인 진단 단계
  2. 결함 코드protocol.http.UnsupportedEncoding이고 결함 소스의 값이 apigee 또는 MP이면 클라이언트 애플리케이션에서 보낸 요청의 요청에 지원되지 않는 인코딩이 포함되어 있습니다. Content-Encoding
  3. HTTP 요청의 일부로 전달된 지원되지 않는 인코딩의 값을 확인할 수 있습니다. 다음 방법 중 하나를 사용합니다.

    오류 메시지

    오류 메시지 사용: <ph type="x-smartling-placeholder">
      </ph>
    1. Apigee Edge에서 받은 전체 오류 메시지에 액세스할 수 있는 경우 다음을 참조하세요. faultstring에 전달합니다. faultstring에 지원되지 않는 있습니다.

      샘플 오류 메시지:

      "faultstring":"Unsupported Encoding \"UTF-8\""
    2. 위의 오류 메시지에서 지원되지 않는 인코딩 값이 faultstring에 표시된 “UTF-8”입니다.

      “UTF-8”은(는) Apigee Edge에서 지원되는 인코딩이 아니므로 이 요청은 다음 오류 코드와 함께 415 Unsupported Media Type 오류와 함께 실패합니다. protocol.http.UnsupportedEncoding입니다.

    실제 요청

    실제 요청 사용: <ph type="x-smartling-placeholder">
      </ph>
    1. 클라이언트 애플리케이션에서 실행한 실제 요청에 액세스할 수 없는 경우 해결 방법.
    2. 클라이언트 애플리케이션이 수행한 실제 요청에 액세스할 수 있는 경우 다음 단계를 따르세요. <ph type="x-smartling-placeholder">
        </ph>
      1. 요청 헤더 Content-Encoding.에 전달되는 값을 확인합니다.
      2. 요청 헤더 Content-Encoding에 전달된 값이 하나가 아닌 경우 지원되는 인코딩에 나열된 값의 확인할 수 있습니다

        샘플 요청:

        curl -v "https://HOSTALIAS/v1/testgzip" -H "Content-Encoding: UTF-8" -X POST -d @request_payload.gz

        위의 샘플 요청은 값 "UTF-8"이 아닌 Content- Encoding 헤더로 보냅니다. Apigee Edge에서 지원되는 인코딩 따라서 이 요청은 오류 코드와 함께 415 Unsupported Media Type 오류와 함께 실패합니다. protocol.http.UnsupportedEncoding

해상도

  1. Apigee에서 지원하는 인코딩 목록은 다음을 참조하세요. 지원되는 인코딩
  2. 클라이언트 애플리케이션이 항상 다음을 전송하는지 확인합니다. <ph type="x-smartling-placeholder">
      </ph>
    • Content-Encoding 헤더 값으로 지원되는 인코딩만 요청
    • Apigee Edge에 지원되는 형식의 요청 페이로드이며 다음 형식과 일치합니다. Content-Encoding 헤더에 지정됨
  3. 위의 예에서 요청 페이로드에는 다음을 나타내는 gz 확장자가 있습니다. 콘텐츠는 gzip여야 합니다. 요청 헤더를 전송하여 문제를 해결할 수 있습니다. Content-Encoding: gzip로, 요청 페이로드는 gzip 형식으로 지정합니다.

    curl -v "https://HOSTALIAS/v1/testgzip" -H "Content-Encoding: gzip" -X POST -d @request_payload.gz
    

원인: 지원되지 않는 인코딩이 응답

진단

  1. API를 사용하여 관찰된 오류의 결함 코드오류 소스 확인 Monitoring, Trace Tool 또는 NGINX 액세스 로그 일반적인 진단 단계.
  2. 결함 소스의 값이 target이면 백엔드 서버에서 전송한 응답에 지원되지 않는 인코딩이 Content-Encoding 헤더.
  3. HTTP 응답의 일부로 전달된 지원되지 않는 인코딩의 값은 다음 방법 중 하나를 사용하여 백엔드 서버를 업데이트할 수 있습니다.

    오류 메시지

    오류 메시지 사용: <ph type="x-smartling-placeholder">
      </ph>
    1. Apigee Edge에서 수신된 전체 오류 메시지에 액세스할 수 있는 경우 faultstring를 참고하세요. faultstring에는 지원되지 않는 인코딩입니다.

      샘플 오류 메시지:

      "faultstring":"Unsupported Encoding \"UTF-8\""
    2. 위의 오류 메시지에서 지원되지 않는 인코딩 값이 faultstring에 표시된 “UTF-8”입니다.

      “UTF-8”는 Apigee Edge에서 지원되는 인코딩이 아니므로 다음 오류 코드와 함께 415 Unsupported Media Type 오류와 함께 요청이 실패합니다. protocol.http.UnsupportedEncoding입니다.

    추적 도구

    Trace 사용: <ph type="x-smartling-placeholder">
      </ph>
    1. 실패한 요청의 trace가 없는 경우 다음으로 이동합니다. 해결 방법.
    2. 실패의 트레이스를 캡처한 경우 지원되지 않는 Content-Encoding 응답의 일부로 백엔드 서버에서 전달한 인코딩 추적 도구의 설명대로 헤더의 캡션을 만들 수 있습니다.

해상도

  1. Apigee에서 지원하는 인코딩 목록은 다음을 참조하세요. 지원되는 인코딩
  2. 백엔드 서버가 항상 다음을 전송하는지 확인합니다. <ph type="x-smartling-placeholder">
      </ph>
    • 지원되는 인코딩만 요청의 Content-Encoding 헤더
    • Apigee Edge에 대해 지원되는 형식의 응답 페이로드이며 다음 형식과 일치합니다. Content-Encoding 헤더에 지정됨

지원되는 인코딩

다음 표에는 Apigee Edge에서 지원하는 인코딩 형식이 나와 있습니다.

헤더 인코딩 설명
Content-Encoding gzip Unix gzip 형식
deflate 이 형식은 무손실 압축 알고리즘과 함께 zlib 구조를 사용합니다.

사양

Apigee는 다음에 따라 415 Unsupported Media Type 오류 응답으로 응답합니다. 다음 RFC 사양을 따릅니다.

사양
<ph type="x-smartling-placeholder"></ph> RFC 7231, 섹션 6.5.13: 415 지원되지 않는 미디어 유형

중요사항

다음에 유의하세요.

  • 지원되지 않는 인코딩이 전달되어 Apigee에서 415 오류를 반환하는 경우 Content-Encoding 헤더를 API 요청의 일부로 사용하면 다음과 같습니다. <ph type="x-smartling-placeholder">
      </ph>
    • 이러한 요청에 대한 trace를 캡처할 수 없습니다.
    • Google에서 전송한 오류 응답의 형식이나 내용은 RaiseFault, AssignMessage와 같은 정책을 사용하는 Apigee Edge

    그 이유는 이 오류가 메시지 프로세서의 초기 단계에서 정책을 실행할 수 있습니다

  • 지원되지 않는 인코딩이 전달되어 Apigee에서 415 오류를 반환하는 경우 가 있는 경우 다음에서 수정해야 합니다. 이 오류를 피할 수 있습니다. 필요한 경우 백엔드 팀과 협력하여 해결할 수 있습니다.

여전히 Apigee Edge 지원의 지원이 필요한 경우 진단 정보를 수집해야 함을 참고하세요.

진단 정보 수집 필요

Apigee 지원팀의 도움이 더 필요하면 다음 사항을 확인하세요. Apigee Edge 지원팀에 문의하세요.

퍼블릭 클라우드 사용자인 경우 다음 정보를 입력합니다.

  • 조직 이름
  • 환경 이름
  • API 프록시 이름
  • 415 오류를 재현하는 데 사용된 curl 명령어를 완료합니다.
  • API 요청에 대한 추적 파일

Private Cloud 사용자인 경우 다음 정보를 입력합니다.

  • 실패한 요청에 대해 발견된 전체 오류 메시지
  • 환경 이름
  • API 프록시 번들
  • API 요청에 대한 추적 파일
  • NGINX 액세스 로그 /opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log

    위치: ORG, ENV, PORT#가 다음으로 대체됩니다. 실제값입니다.

  • 메시지 프로세서 시스템 로그 /opt/apigee/var/log/edge-message- processor/logs/system.log