API 사용해 보기 패널에서 알 수 없는 오류가 발생했습니다.

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

증상

통합 개발자 포털의 API 호출이 실패하고 Unknown Error 또는 API 사용해 보기 패널을 닫습니다

오류 메시지

API에 대해 빈 응답 또는 다음과 같은 오류 메시지가 표시될 수 있습니다. 다음과 같은 기능을 지원합니다.

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

개발자 도구 > 콘솔 탭을 클릭하면 다음과 같이 표시됩니다. 오류:

Access to XMLHTTPRequest at 'API_URL' from origin 'URL_of_Integrated_DevPortal'
has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is
present on the requested resource.

일반적인 오류 메시지는 <ph type="x-smartling-placeholder"></ph> 개발자 도구 > 콘솔 탭은 다음과 같습니다.

일반 오류 메시지, 더 큰 이미지를 보려면 클릭하세요. 일반 오류 메시지

가능한 원인

원인 설명 다음에 관한 문제 해결 안내
처리되지 않은 정책 오류 API 요청의 런타임 흐름에서 정책이 실패하면 기본 오류 응답이 CORS 헤더 없이 전송됩니다. Edge 퍼블릭 클라우드 사용자
Access-Control-Allow-Origin의 여러 값 '메시지 정책 할당'에서 '설정' 대신 '추가'를 사용합니다. Edge 퍼블릭 클라우드 사용자

원인: 처리되지 않은 정책 오류

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

진단

<ph type="x-smartling-placeholder">
  1. 2XX 이외의 응답이 예상되는 경우에만 문제가 발생하는지 확인합니다.
  2. 실패한 요청의 경우 프록시 흐름에 정책이 있는지 확인합니다.
  3. <ph type="x-smartling-placeholder"></ph> 요청을 추적하고 continueOnError="false"에서 실패하여 오류를 발생시킵니다.
    1. '예'인 경우 <ph type="x-smartling-placeholder"></ph> 할당 메시지 CORS 정책이 실행되었거나 오류가 발생하지 않았습니다. 응답 흐름에 따라 다릅니다.
    2. 그렇지 않은 경우 이 문제가 발생한 것입니다.
      왜냐하면 요소가 포함된 모든 정책 continueOnError="false"가 실패하면 요청이 오류 응답 흐름을 표시합니다. 서비스 내의 명시적 오류 처리가 없다면 해당 기본 오류 응답이 다시 전송됩니다. 이 오류 응답에는 CORS 헤더. 따라서 통합 개발자의 API 호출은 Unknown error 오류와 함께 포털에 장애가 발생합니다.

다음 스크린샷은 오류 메시지 예시와 성공 메시지가 표시됩니다.

통합 포털 API 사용해 보기 패널의 오류 메시지 예 프록시 Trace 창에서 다음을 수행합니다.

오류 메시지 예시, 더 큰 이미지를 보려면 클릭하세요. 오류 메시지 예시

통합 포털 API 사용해 보기 패널의 성공 메시지 예시 프록시 Trace 창에서 다음을 수행합니다.

성공 메시지 예시, 이미지를 더 보려면 클릭하세요. 성공 메시지 예시

해상도

  1. 기본 오류 메시지에 의존하는 대신 <ph type="x-smartling-placeholder"></ph> 오류 응답을 처리하려면 오류 규칙을 구현해야 합니다. 포함 적절한 헤더를 사용하여 할당 메시지 CORS 정책을 호출하고 호출합니다. <ph type="x-smartling-placeholder"></ph>에 FaultRule을 사용합니다.
  2. 때로는 각 네트워크에 대해 오류 규칙을 정의하는 것이 불가능할 수 있습니다. fault; 따라서 기본 오류 규칙을 구현하여 할당 메시지 CORS 정책:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ProxyEndpoint name="proxy-endpoint-name">
    <Description/>
    <!-- Add a default fault rule to add CORS -->
    <DefaultFaultRule name="fault-rule">
        <Step>
            <Name>add-cors</Name>
        </Step>
    </DefaultFaultRule>
    <FaultRules/>
    <!--
    <Flows />
    Rest of the proxy definition
    -->
</ProxyEndpoint>

원인: Access-Control-Allow-Origin의 값이 여러 개

진단

  1. Access-Control-Allow-Origin 헤더의 값을 <ph type="x-smartling-placeholder"></ph> trace 세션을 얻습니다.
  2. Access-Control-Allow-Origin 헤더는 하나의 값만 허용함 있습니다. 값을 두 개 이상 설정하면 CORS 문제가 발생할 수 있으며 응답을 렌더링하지 못합니다.
  3. 추적에 있는 Access-Control-Allow-Origin 헤더의 값이 다음과 같습니다.
    *,*
    이 경우 대상 서버와 'AssignMessage CORS 정책'이 해당 값을 설정합니다.
  4. 이는 사용자가 Access-Control-Allow-Origin <Add> element 백엔드 자체에서 여러 값을 설정하고 있습니다.

*,*과 같은 Access-Control-Allow-Origin의 예는 다음과 같습니다.

여러 개의 값이 사용된 예, 더 큰 이미지를 보려면 클릭하세요. 여러 값의 예

*과 같은 Access-Control-Allow-Origin의 예는 다음과 같습니다.

사용된 단일 값의 예, 더 큰 이미지를 보려면 클릭하세요. 사용된 단일 값의 예

<Add> 사용 예시:

추가를 사용한 예, 더 큰 이미지를 보려면 클릭하세요. Add(추가)를 사용한 예

<Set> 사용 예시:

세트를 사용한 예, 이미지를 더 보려면 클릭하세요. 예를 들어

해상도

  1. 권장되는 방법은 <Set> element( Access-Control-Allow-Origin <Add> element)을 하나의 값만 허용됩니다.
  2. 또는 Access-Control-Allow-Origin 헤더를 다음의 경우에만 설정합니다. 한 곳에서 또는 <ph type="x-smartling-placeholder"></ph> 할당 메시지 CORS 정책 또는 대상 서버.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AssignMessage async="false" continueOnError="false" enabled="true" name="set-cors">
    <DisplayName>Set CORS</DisplayName>
    <FaultRules/>
    <Properties/>
    <Set>
        <Headers>
            <Header name="Access-Control-Allow-Origin">*</Header>
        </Headers>
    </Set>
    <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
    <AssignTo createNew="false" transport="http" type="response"/>
</AssignMessage>

Apigee 지원팀의 도움이 더 필요하면 다음 페이지로 이동하세요. 진단 정보를 수집해야 합니다.

진단 정보 수집 필요

다음 진단 정보를 수집한 후 Apigee Edge 지원:

  • 조직 이름
  • 환경 이름
  • API 프록시 이름
  • 오류 재현에 사용된 전체 curl 명령어
  • API 요청에 대한 추적 파일
  • 대상/백엔드 서버의 전체 응답 출력과 함께 페이로드의 크기