Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin. bilgi
Belirti
Entegre geliştirici portalından gelen API çağrısı, Unknown Error
hatasıyla veya Bu API'yi deneyin panelinde boş bir yanıtla başarısız olur.
Hata mesajları
Entegre portalda API istekleri için boş bir yanıt veya aşağıdaki hata mesajını görebilirsiniz:
Unknown Error
Geliştirici Araçları > Konsol sekmesinde aşağıdaki hatayı görürsünüz:
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 sekmesinde görülen genel bir hata mesajı aşağıdaki gibidir:
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 Herkese Açık Bulut kullanıcıları |
Access-Control-Allow-Origin için Birden Fazla Değer | İleti Politikası Atayın bölümünde Ayarla yerine Ekle seçeneğini kullanma. | Edge Herkese Açık Bulut kullanıcıları |
Neden: İşlenmemiş politika hatası
Teşhis
- Sorunun yalnızca
2XX
dışında bir yanıt beklendiğinde oluştuğunu doğrulayın. - Başarısız istekler için proxy akışında politikalar bulunduğunu doğrulayın.
-
İsteği izleyin ve
continueOnError="false"
içeren bir politikanın başarısız olup olmadığını ve hata verip vermediğini kontrol edin. - Yanıtınız evet ise assignMessage CORS politikasının hata yanıtı akışında yürütülüp yürütülmediğini doğrulayın.
- Aksi halde, sorunun nedeni budur.
Bunun nedeni,continueOnError="false"
öğesine sahip herhangi bir politikanın başarısız olması durumunda isteğin hata yanıtı akışına girmesidir. Hata yanıtı akışında açık bir hata işleme yoksa politikaya karşılık gelen varsayılan hata yanıtı geri gönderilir. Bu hata yanıtının CORS başlığı yok. Sonuç olarak, entegre geliştirici portalından gelen API çağrısıUnknown error
hatasıyla başarısız olur.
Aşağıdaki ekran görüntülerinde örnek bir hata mesajı ve örnek bir başarı mesajı gösterilmektedir.
Entegre portaldaki Bu API'yi deneyin panelinde ve proxy İzleme penceresindeki örnek hata mesajı:
Entegre portaldaki Bu API'yi deneyin panelinde ve proxy Trace penceresindeki örnek başarı mesajı:
Çözünürlük
- Hata yanıtını işlemek için varsayılan hata mesajını kullanmak yerine hata kuralı uygulanmalıdır. Uygun başlıklara sahip bir assignMessage CORS politikası ekleyin ve bunu FaultRule'da çağırın.
- Bazı durumlarda her hata için bir hata kuralının tanımlanması uygun olmayabilir. Bu nedenle, AtaMessage CORS politikasını yürütmek için varsayılan bir hata kuralı uygulanabilir:
<?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
- İzleme oturumunda Access-Control-Allow-Origin üst bilgisinin değerini kontrol edin.
- Access-Control-Allow-Origin üstbilgisi, yalnızca tek bir değerin ayarlanmasına izin verir. Birden fazla değer ayarlamak CORS sorununa neden olabilir ve geliştirici portalı, yanıtları oluşturamaz.
- İzlemedeki Access-Control-Allow-Origin üst bilgisinin değeri
*,*
şöyle görünüyorsa:Bu, hem hedef sunucunun hem de AttributionMessage CORS politikasının değerini ayarladığı anlamına gelir. - Kullanıcı bir politikada Access-Control-Allow-Origin için
<Add> element
seçeneğini kullandığında veya arka ucun kendisi birden fazla değer ayarladığında bu durum meydana gelebilir.
*,*
değerine eşit olan örnek Access-Control-Allow-Origin:
*
değerine eşit olan örnek Access-Control-Allow-Origin:
<Add>
kullanan örnek:
<Set>
kullanan örnek:
Çözünürlük
- Önerilen yaklaşım, yalnızca tek bir değere izin verildiğinden Access-Control-Allow-Origin için
<Set> element
(<Add> element
yerine) kullanılmasıdır. - Alternatif olarak, Access-Control-Allow-Origin başlığını yalnızca tek bir yere ( assignMessage CORS politikası veya hedef sunucu) ayarlayın.
<?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 Desteği'nden hâlâ yardıma ihtiyacınız varsa Teşhis bilgilerini toplamanız gerekiyor bölümünü inceleyin.
Teşhis bilgileri toplanmalıdır
Aşağıdaki teşhis bilgilerini toplayın ve ardından Apigee Edge Destek Ekibi ile iletişime geçin:
- Kuruluş adı
- Ortam adı
- API Proxy adı
- Hatayı yeniden oluşturmak için kullanılan tam curl komutu
- API istekleri için izleme dosyası
- Yükün boyutuyla birlikte hedef/arka uç sunucusundan alınan yanıtın tam çıktısı