Bu API'yi deneyin panelinde bilinmeyen hata

Apigee Edge belgelerini görüntülüyorsunuz.
. Git: Apigee X belgeleri.
bilgi

Belirti

Entegre geliştirici portalından gelen API çağrısının başarısız olması durumunda Unknown Error veya Bu API'yi deneyin kontrol edebilirsiniz.

Hata mesajları

API için boş bir yanıt veya aşağıdaki hata mesajını görebilirsiniz. şuna benzer:

Unknown Error
.

Geliştirici Araçları > Konsol sekmesinde şu bilgileri görürsünüz: hata:

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.

Geliştirici Araçları > Konsol sekmesi aşağıdaki gibidir:

genel hata mesajı, büyük resmi görmek için tıklayın genel hata mesajı

Olası nedenler

Neden Açıklama Şunun için geçerli sorun giderme talimatları:
İşlenmemiş politika hatası API isteğinin çalışma zamanı akışında herhangi bir politika başarısız olduğunda varsayılan hata yanıtı CORS başlıkları olmadan gönderilir. Edge Genel Bulut kullanıcıları
Access-Control-Allow-Origin için Birden Fazla Değer İleti Politikası Ata bölümünde ayarla yerine Ekle seçeneğini kullanarak. Edge Genel Bulut kullanıcıları

Neden: İşlenmemiş politika hatası

Teşhis

  1. Sorunun yalnızca 2XX olmayan bir yanıt beklenirken oluştuğunu doğrulayın.
  2. Başarısız istekler için proxy akışında politikalar olduğunu doğrulayın.
  3. İsteği takip edin ve continueOnError="false" başarısız oluyor ve hatayı bildiriyor.
    1. Yanıtınız evet ise Ataması CORS politikası yürütüldü veya hata mesajı verilmedi yanıt akışı.
    2. Aksi halde bu sorunun nedeni budur.
      Bunun nedeni, öğesini içeren herhangi bir politika continueOnError="false" başarısız olursa istek hata yanıt akışı. Burada açık bir hata işleme yoksa hata yanıt akışını, ardından ilgili hatanın geri gönderilir. Bu hata yanıtında hiç yok CORS başlıkları. Sonuç olarak, entegre edilmiş geliştiriciden gelen API çağrısı portal Unknown error ile başarısız oluyor.

Aşağıdaki ekran görüntülerinde örnek bir hata mesajı ve bir örnek yer almaktadır mesajının gösterilmesini sağlar.

Entegre portal Bu API'yi deneyin panelinde örnek hata mesajı ve proxy Trace penceresinde:

örnek hata mesajı, büyük resmi tıklayın örnek hata mesajı

Entegre portaldaki Bu API'yi deneyin panelinde örnek başarı mesajı ve proxy Trace penceresinde:

örnek başarı mesajı, büyük resmi görmek için tıklayın örnek başarı mesajı

Çözünürlük

  1. Varsayılan hata mesajına güvenmek yerine hata yanıtının işlenmesi için hata kuralı uygulanmalıdır. ekleyin Ataması CORS politikasını uygun başlıklarla paylaşma ve bu politikayı çağırma FaultRule'u seçin.
  2. Bazı durumlarda her bir birim için bir hata kuralının tanımlanması hata; Bu nedenle, hata mesajının yürütülmesi için Atama İletisi CORS politikası:
<?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>

Neden: Access-Control-Allow-Origin için Birden Fazla Değer

Teşhis

  1. Access-Control-Allow-Origin üstbilgisinin değerini oturum açın.
  2. Access-Control-Allow-Origin üstbilgisi yalnızca tek bir değere izin verir ayarlanacak. Birden fazla değer ayarlamak CORS sorununa ve geliştirici portalı yanıt oluşturamaz.
  3. İzlemedeki Access-Control-Allow-Origin başlığının değeri Şöyle görünür:
    *,*
    Bu, hem hedef sunucu hem de Atamalar CORS politikası, kendi değerini ayarlıyor.
  4. Bu durum, bir kullanıcı Access-Control-Allow-Origin için <Add> element politikası veya arka ucun kendisi birden fazla değer ayarlıyorsa.

*,* değerine eşit olan Access-Control-Allow-Origin örneği:

örnek birden çok değer kullanılmış, büyük resmi görmek için tıklayın kullanılan birden çok değer örneği

* değerine eşit olan Access-Control-Allow-Origin örneği:

örnek tek değer kullanıldı, daha büyük resmi için tıklayın kullanılan tek değer örneği

<Add> kullanılan örnek:

Örneğin Ekle, daha büyük resmi görmek için tıklayın Ekleme Özelliğini Kullanma örneği

<Set> kullanılan örnek:

örnek olarak Ayarla, daha büyük resmi görmek için tıklayın örnek olarak

Çözünürlük

  1. Önerilen yaklaşım, <Set> element ( <Add> element) olarak Access-Control-Allow-Origin yalnızca tek bir değere izin verilir.
  2. Alternatif olarak, Access-Control-Allow-Origin üstbilgisini yalnızca bir yer, ya Ataray CORS politikasını veya hedef sunucuyu.
<?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>

Hâlâ Apigee Destek Ekibi'nden yardım almak istiyorsanız şu sayfaya gidin: Teşhis bilgileri toplanmalıdır.

Teşhis bilgileri toplanmalıdır

Aşağıdaki teşhis bilgilerini toplayın, ardından iletişime geçin Apigee Edge Desteği:

  • Kuruluş adı
  • Ortam adı
  • API Proxy adı
  • Hatayı yeniden oluşturmak için kullanılan tam curl komutu
  • API istekleri için izleme dosyası
  • Hedef/arka uç sunucudan alınan yanıtın tam çıktısı ve yük boyutunu