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

1ogrenci (13) 3 ay önce sordu

Test için bir API yazdım. Bunu sunucuya attığımda aşağıdaki hatayı veriyor. Sorun ne olabilir?

Access to fetch at '....' from origin '....' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.

Toplam 1 cevap


alattin (17125) 3 ay önce cevapladı

Bu hata  (Access to fetch at .... from origin ... has been blocked by CORS policy: o 'Access-Control-Allow-Origin' header is present on the requested resource) biraz aldatıcı olabilir. 

Öncelikle program.cs de

builder.Services.AddCors(options =>
{
    options.AddPolicy("AllowSpecificOrigins",
                      policy =>
                      {
                          policy.WithOrigins("https://app.uzmanim.net")                          
                          .AllowAnyMethod()
                          .AllowAnyHeader();
                      });
});

şeklinde izin verdiğin domainleri ekle. Yine program.cs'de şu eklemeyi yap:

app.UseCors("AllowSpecificOrigins");
app.UseAuthorization();

Bunları yaptığın halde hata alıyorsan hata CORS hatası değildir.  API üzerinden çağırdığın metod hata içeriyorsa yine karşına CORS hatası şeklinde görünen bir hata gelebilir. Bu açıdan sen CORS sebepli sorun yaşadğını düşünebilirsin.

Sunucuya erişin varsa Event Viewer üzerinde Application'ı kontrol et.

Ben de benzer bir hata almıştım. CORS GET işlemlerinde sorunsuz çalışırken POST işlemlerinde (AllowAnyMethod olmasına rağmen) CORS hatası alıyordum. Sorun CORS kaynaklı diye bu yönde araştırma yaparken Event Viewer üzerinden baktığımda  Category: Microsoft.AspNetCore.Server.IIS.Core.IISHttpServer  EventId: 2 - ): SQLite Error 8: 'attempt to write a readonly database'. şeklinde aslında SQLite veritabanına yazma yetkisi verilmediğini fark ettim. Ki bu veritabanına daha önce yazma yetkisi verilmiş ve işlem yapışmıştı. Her ne şekilde olduysa veritabanına verilen yazma yetkileri silinmiş. 

Fakat tarayıcı tarafında ekrana gelen hata aynen sendeki gibi Access to fetch at .... from origin ... has been blocked by CORS policy: o 'Access-Control-Allow-Origin' header is present on the requested resource şeklindeydi. Demem o ki sunucuya erişimin varsa mutlaka Event Viewer'ı kontrol et. Yoksa da API tarafında Access to fetch at .... from origin ... has been blocked by CORS policy: o 'Access-Control-Allow-Origin' header is present on the requested resource hatası aldığın metodun doğru çalıştığından emin ol.