<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 지원되지 않는 미디어 유형.
이 오류가 발생할 수 있는 원인은 다음과 같습니다.
| 원인 | 설명 | 다음에 관한 문제 해결 안내 |
|---|---|---|
| 요청에 지원되지 않는 인코딩이 사용되었습니다. | 요청 헤더 Content-Encoding에 지원되지 않는 인코딩이 포함되어 있습니다.
Apigee Edge입니다 |
에지 퍼블릭 및 프라이빗 클라우드 사용자 |
| 응답에 지원되지 않는 인코딩이 사용되었습니다. | 백엔드 서버 응답 헤더 Content-Encoding에는
Apigee Edge에서 지원되지 않습니다. |
에지 퍼블릭 및 프라이빗 클라우드 사용자 |
일반적인 진단 단계
오류를 진단하려면 다음 방법 중 하나를 사용하면 됩니다.
API 모니터링
<ph type="x-smartling-placeholder">API 모니터링을 사용하여 오류를 진단하려면 다음 안내를 따르세요.
- <ph type="x-smartling-placeholder"></ph> Apigee Edge 계정에 로그인합니다.
문제를 조사하려는 조직으로 전환합니다.
- 분석 > API 모니터링 > 조사 페이지를 엽니다.
- 오류가 관찰된 특정 기간을 선택합니다.
- 프록시 필터가 전체로 설정되어 있는지 확인합니다.
- 시간을 기준으로 결함 코드를 표시합니다.
아래와 같이 오류 코드가
protocol.http.UnsupportedEncoding인 셀을 선택합니다.
오류 코드
protocol.http.UnsupportedEncoding에 관한 정보는 아래와 같이 표시됩니다.
로그 보기 를 클릭하고
415로 실패한 요청 중 하나를 펼칩니다. 오류:
- 로그 창에서 다음 세부정보를 확인합니다.
<ph type="x-smartling-placeholder">
- </ph>
- 결함 소스:
apigee에서 오류가 반환되었음을 표시합니다. 또는target. - 오류 코드:
protocol.http.UnsupportedEncoding과 일치해야 합니다.
- 결함 소스:
- 결함 소스가
apigee이면 요청이Content-Encoding헤더에 지원되지 않는 인코딩이 포함되어 있습니다. - 오류 소스가
target이면 백엔드 서버가 응답에Content-Encoding헤더에 지원되지 않는 인코딩이 포함되어 있습니다.
추적 도구
<ph type="x-smartling-placeholder">Trace 도구를 사용하여 오류를 진단하는 방법은 다음과 같습니다.
- 사용
trace 세션 및 다음 중 하나를 수행합니다.
<ph type="x-smartling-placeholder">
- </ph>
415 Unsupported Media Type오류가 발생할 때까지 기다립니다.- 문제를 재현할 수 있는 경우 API를 호출하여 문제를 재현합니다.
오류
415 Unsupported Media Type개
Show all FlowInfos(모든 흐름 정보 표시)가 사용 설정되어 있는지 확인합니다.
- 실패한 요청 중 하나를 선택하고 trace를 검토합니다.
- 추적의 여러 단계를 살펴보고 오류가 발생한 위치를 찾습니다.
오류는 일반적으로 대상으로 요청 전송됨 서버 단계를 실행합니다.
트레이스에서 오류 값을 확인합니다.
위의 샘플 트레이스에서는 오류를
Unsupported Encoding "utf-8"로 보여줍니다. 이후 요청이 백엔드 서버로 전송된 후 Apigee에서 오류가 발생하며 이는 백엔드 서버가 응답 헤더Content-Encoding을"utf-8"중 Apigee에서 지원되는 인코딩을 사용합니다.- 트레이스의 AX (애널리틱스 데이터 기록됨) 단계로 이동하여 클릭합니다.
단계 세부정보의 오류 / 응답 헤더 섹션까지 아래로 스크롤합니다. 결정을 내리고 X-Apigee-fault-code 및 X-Apigee-fault-source의 값이 아래와 같이 표시됩니다.
X-Apigee-fault-code와 X-Apigee-fault-source의 값은 다음과 같이 표시됩니다.
protocol.http.UnsupportedEncoding,target는 지원되지 않는 인코딩 값"utf-8"이 응답 헤더Content-Encoding에 있는 백엔드 서버에 저장됩니다.응답 헤더 값 X-Apigee-fault-code protocol.http.UnsupportedEncodingX-Apigee-fault-source target- 다음을 사용 중인지 확인합니다.
<ph type="x-smartling-placeholder"></ph>
프록시 체이닝 즉, 대상 서버/대상 엔드포인트가
사용할 수 있습니다
이를 확인하려면 대상 서버에 요청 전송됨 단계로 돌아가세요. Curl 표시를 클릭합니다.
- 대상 서버로 전송된 요청의 curl 창이 열리면 여기에서 다음 작업을 수행할 수 있습니다. 대상 서버 호스트 별칭을 결정합니다.
- 대상 서버 호스트 별칭이 가상 호스트 별칭을 가리키는 경우 프록시 별칭입니다.
체이닝입니다. 이 경우 연결된 프록시에 대해 위의 모든 단계를
415 Unsupported Media Type오류의 실제 원인을 확인해야 합니다. - 대상 서버 호스트 별칭이 백엔드 서버를 가리키는 경우 백엔드 서버가 지원되지 않는 인코딩을 Apigee에 전달하고 있습니다.
Nginix 액세스 로그
<ph type="x-smartling-placeholder">NGINX 액세스 로그를 사용하여 오류를 진단하려면 다음 안내를 따르세요.
- Private Cloud 사용자인 경우 NGINX 액세스 로그를 사용하여
HTTP
415오류에 대한 주요 정보입니다. NGINX 액세스 로그를 확인합니다.
<ph type="x-smartling-placeholder">/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log- 특정 기간 동안
415개의 오류 검색 (문제가 발생한 경우)415로 여전히 실패하는 요청이 있는지 확인하세요. 일치하는 X-Apigee-fault-code 에
415오류가 있는 경우protocol.http.UnsupportedEncoding값을 구한 다음 (X-Apigee-fault-source.)NGINX 액세스 로그의 샘플 415 오류:
NGINX 액세스 로그의 위 샘플 항목에는 X- Apigee-fault-code 및 X-Apigee-fault-source:
응답 헤더 값 X-Apigee-fault-code protocol.http.Response405WithoutAllowHeaderX-Apigee-fault-source MPX-Apigee-fault-source 는X-Apigee-fault-source 값이X-Apigee-fault-source 일 수도 있습니다.
원인: 요청에 지원되지 않는 인코딩이 있음
진단
- API를 사용하여 관찰된 오류의 결함 코드 및 오류 소스 확인 에 설명된 대로 모니터링 또는 NGINX 액세스 로그 일반적인 진단 단계
- 결함 코드가
protocol.http.UnsupportedEncoding이고 결함 소스의 값이apigee또는MP이면 클라이언트 애플리케이션에서 보낸 요청의 요청에 지원되지 않는 인코딩이 포함되어 있습니다.Content-Encoding - HTTP 요청의 일부로 전달된 지원되지 않는 인코딩의 값을 확인할 수 있습니다.
다음 방법 중 하나를 사용합니다.
오류 메시지
오류 메시지 사용: <ph type="x-smartling-placeholder">- </ph>
Apigee Edge에서 받은 전체 오류 메시지에 액세스할 수 있는 경우 다음을 참조하세요.
faultstring에 전달합니다.faultstring에 지원되지 않는 있습니다.샘플 오류 메시지:
"faultstring":"Unsupported Encoding \"UTF-8\""
위의 오류 메시지에서 지원되지 않는 인코딩 값이
faultstring에 표시된“UTF-8”입니다.“UTF-8”은(는) Apigee Edge에서 지원되는 인코딩이 아니므로 이 요청은 다음 오류 코드와 함께415 Unsupported Media Type오류와 함께 실패합니다.protocol.http.UnsupportedEncoding입니다.
실제 요청
실제 요청 사용: <ph type="x-smartling-placeholder">- </ph>
- 클라이언트 애플리케이션에서 실행한 실제 요청에 액세스할 수 없는 경우 해결 방법.
- 클라이언트 애플리케이션이 수행한 실제 요청에 액세스할 수 있는 경우
다음 단계를 따르세요.
<ph type="x-smartling-placeholder">
- </ph>
- 요청 헤더
Content-Encoding.에 전달되는 값을 확인합니다. - 요청 헤더
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
- 요청 헤더
해상도
- Apigee에서 지원하는 인코딩 목록은 다음을 참조하세요. 지원되는 인코딩
- 클라이언트 애플리케이션이 항상 다음을 전송하는지 확인합니다.
<ph type="x-smartling-placeholder">
- </ph>
Content-Encoding헤더 값으로 지원되는 인코딩만 요청- Apigee Edge에 지원되는 형식의 요청 페이로드이며 다음 형식과 일치합니다.
Content-Encoding헤더에 지정됨
위의 예에서 요청 페이로드에는 다음을 나타내는
gz확장자가 있습니다. 콘텐츠는gzip여야 합니다. 요청 헤더를 전송하여 문제를 해결할 수 있습니다.Content-Encoding: gzip로, 요청 페이로드는gzip형식으로 지정합니다.curl -v "https://HOSTALIAS/v1/testgzip" -H "Content-Encoding: gzip" -X POST -d @request_payload.gz
원인: 지원되지 않는 인코딩이 응답
진단
- API를 사용하여 관찰된 오류의 결함 코드 및 오류 소스 확인 Monitoring, Trace Tool 또는 NGINX 액세스 로그 일반적인 진단 단계.
- 결함 소스의 값이
target이면 백엔드 서버에서 전송한 응답에 지원되지 않는 인코딩이Content-Encoding헤더. - HTTP 응답의 일부로 전달된 지원되지 않는 인코딩의 값은
다음 방법 중 하나를 사용하여 백엔드 서버를 업데이트할 수 있습니다.
오류 메시지
오류 메시지 사용: <ph type="x-smartling-placeholder">- </ph>
Apigee Edge에서 수신된 전체 오류 메시지에 액세스할 수 있는 경우
faultstring를 참고하세요.faultstring에는 지원되지 않는 인코딩입니다.샘플 오류 메시지:
"faultstring":"Unsupported Encoding \"UTF-8\""
-
위의 오류 메시지에서 지원되지 않는 인코딩 값이
faultstring에 표시된“UTF-8”입니다.“UTF-8”는 Apigee Edge에서 지원되는 인코딩이 아니므로 다음 오류 코드와 함께415 Unsupported Media Type오류와 함께 요청이 실패합니다.protocol.http.UnsupportedEncoding입니다.
추적 도구
Trace 사용: <ph type="x-smartling-placeholder">
해상도
- Apigee에서 지원하는 인코딩 목록은 다음을 참조하세요. 지원되는 인코딩
- 백엔드 서버가 항상 다음을 전송하는지 확인합니다.
<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