Flask CORS Policy Issue Hatası Nasıl Çözülür?

Flask uygulamanızda karşılaştığınız CORS Policy hatasını çözmek için gerekli olan adımlar ve ipuçlarını adım adım açıkladık. Flask-CORS kütüphanesi ile CORS başlıklarını yöneterek güvenli bir şekilde çapraz domain erişimi sağlamak mümkün.

BFS

Bir web uygulaması geliştirdiğinizde, genellikle front-end ve back-end arasındaki iletişimi sağlamak için bir API kullanırsınız. Ancak, bazen bu API'yi başka bir domainden çağırmaya çalışırken bir hata ile karşılaşırsınız. Bu hatanın adı da, Flask ile geliştirilmiş bir uygulamada CORS Policy Issue hatasıdır.

Peki, CORS nedir ve bu hata neden karşımıza çıkar? CORS (Cross-Origin Resource Sharing), web tarayıcılarının bir kaynağa (örneğin bir API'ye) başka bir kaynaktan (farklı bir domain'den) erişmesine izin verir. Ancak, güvenlik nedeniyle, her zaman bu tür çapraz erişime izin verilmez. Flask uygulamanız bir API sağlıyorsa ve bu API'yi başka bir domain üzerinden çağırıyorsanız, tarayıcı, güvenlik politikaları gereği bu isteği engeller.

Ama merak etmeyin! Bu hatayı çözmek oldukça basit. Flask uygulamanıza, istemci tarafından gelen isteklerin başka bir kaynağa yönlendirilmesine izin verecek bazı ayarlamalar yapmanız gerekecek.

1. Flask-CORS Kütüphanesini Yüklemek

İlk adım, Flask uygulamanıza CORS desteği eklemek. Bunun için Flask-CORS adlı Python kütüphanesini kullanabiliriz. Flask-CORS, CORS başlıklarını kolayca yönetmenize ve çapraz kaynak erişimini güvenli bir şekilde sağlamak için gerekli olan izinleri eklemenize yardımcı olur.

Kütüphaneyi yüklemek için terminal ya da komut satırına şu komutu yazabilirsiniz:

pip install flask-cors


Bu işlem, Flask uygulamanıza CORS desteği ekleyecek ve CORS hatalarını çözmeye bir adım daha yaklaşmış olacaksınız.

2. Flask Uygulamanıza CORS Desteği Eklemek

Flask-CORS yüklendikten sonra, Flask uygulamanızda CORS başlıklarını eklemek oldukça kolay. Bunun için sadece birkaç satır kod yazmanız yeterli. Flask-CORS kütüphanesini projenize dahil ettikten sonra, CORS’u her bir rota için veya genel olarak tüm uygulama için etkinleştirebilirsiniz.

Tüm uygulama için CORS desteği eklemek için şu kodu kullanabilirsiniz:

from flask import Flask
from flask_cors import CORS

app = Flask(__name__)
CORS(app)

@app.route('/api', methods=['GET'])
def api():
    return 'CORS desteği sağlandı!'

if __name__ == '__main__':
    app.run(debug=True)


Bu kod, Flask uygulamanızdaki tüm rotalar için CORS’u etkinleştirir. Artık başka bir domainden gelen istekler, güvenlik ihlali oluşturmayacak ve verilerinizi başarılı bir şekilde alabilecektir.

3. Sadece Belirli Domanlere İzin Vermek

Eğer sadece belirli bir domainden gelen isteklere izin vermek istiyorsanız, `CORS()` fonksiyonunun parametrelerine bir liste ekleyerek hangi domainlere izin verileceğini belirleyebilirsiniz. Örneğin, sadece "http://example.com" domaininden gelen isteklere izin vermek için şu şekilde bir yapı oluşturabilirsiniz:

CORS(app, resources={r"/api/*": {"origins": "http://example.com"}})


Bu durumda, sadece `http://example.com` domaininden gelen istekler kabul edilecektir. Diğer domainler, CORS hatası alacaktır.

4. CORS Hatasını Test Etmek

Her şey ayarlandığında, uygulamanızda CORS hatasını test etmek için tarayıcıyı açın ve front-end uygulamanızdan Flask API'nize bir istek yapın. Eğer her şey doğru şekilde yapılandırıldıysa, artık CORS hatası almayacaksınız.

Eğer hâlâ bir hata alıyorsanız, sunucunun doğru şekilde çalıştığını ve portların birbirine uygun şekilde ayarlandığını kontrol ettiğinizden emin olun. Genellikle CORS hatası, sunucunun doğru yapılandırılmamasından kaynaklanır.

5. Güvenlik Konusunda Dikkat Edilmesi Gerekenler

CORS, kullanıcıların verilerinize erişimini sağlasa da güvenlik açısından dikkat edilmesi gereken bir konu olabilir. Özellikle tüm domainlere izin vermek, uygulamanızı kötü niyetli kişilere açabilir. Bu nedenle, yalnızca güvenli ve tanımlı domainlere izin vermek her zaman daha iyidir. Ayrıca, verilerinizi sadece gerekli olan kişilerle paylaşmak için uygun yetkilendirme mekanizmaları da eklemeyi unutmayın.

İlgili Yazılar

Benzer konularda diğer yazılarımız

ApiUp Nedir?

Merhabalar, bir süredir üzerinde çalıştığım yeni projemi hayata geçirdim. Bu Proje sayesinde, IRC sunucuları en popüler uygulamalarla entegre edilebiliyor. Şu anda Skype, WhatsApp ve Telegram uygulamalarını destekliyoruz. API Sayesinde, IRC Sunucularından...

ASP.NET Core ile Mobil Uygulama Geliştirme: Cross-Platform Web ve Mobil Uygulama Birleştirme

Günümüzde mobil uygulamalar hayatımızın ayrılmaz bir parçası haline geldi. Akıllı telefonlarımızda geçirdiğimiz zamanın büyük bir kısmını mobil uygulamalar sayesinde geçiriyoruz. Peki, bir mobil uygulama geliştirirken karşılaştığımız zorlukları nasıl...

VPN Kullanırken Güvenlik Hatalarından Kaçınmak: En Yaygın Yapılan 7 Hata ve Çözümleri

**İnternette güvenli gezintiyi sağlamak, modern dünyada her geçen gün daha önemli hale geliyor. Hangi cihazı kullanırsanız kullanın, dijital güvenliğinizi korumak, çoğu zaman zor bir görev gibi görünebilir. Ancak **VPN** (Virtual Private Network - Sanal...