Jquery üzerinde Ajax ile POST işlemi yaparken oluşan CORS Policy hatasının çözümü
#AJAX #JQUERY #ASP.NET #MVC #HATA
Jquery üzerinde Ajax ile POST işlemi yaparken oluşan CORS Policy hatasının çözümü
Access to XMLHttpRequest at 'https://onesignal.com/api/v1/notifications' from origin 'https://www.yavuzceliker.com.tr' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
Hatamız yukarıda gösterildiği şekilde oluşuyor.
Bu hata genelde iki farklı alan adına veya iki farklı protokole hatta farklı portlara sahip web siteleri arasındaki erişim izni ile alakalı oluşuyor. Bu erişim iznini sağlayan sisteme ise CORS yani Cross Origin Resource Sharing, türkçesi ile ise Kökenler Arası Kaynak Paylaşımı olarak çevrilebilir.
Hatanın oluştuğu kod aşağıdaki gibidir.
var Veri = { "app_id": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", "headings": { "en": "Deneme Başlık EN","tr":"Deneme Başlık TR" }, "url": "https://www.siteniz.com", "contents": { "en": "Deneme içerik EN", "tr": "Deneme İçerik TR" }, "included_segments":"Active Users" }; $.ajax( { url: 'https://onesignal.com/api/v1/notifications', crossDomain: true, type: 'POST', dataType: 'json', headers: { 'Content-Type': 'application/json', 'Authorization':'Basic XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'}, data:Veri, //HATAYA SEBEP OLAN SATIR success: function (data) { alert("Gönderildi"); }, Error: function (data) { alert("Hata Oluştu"); } });
Yukarıda da gösterildiği gibi hataya sebep olan kod satırı, post edilecek olan verinin eklendiği satır. Burada hataya sebep olan şey gönderilen verinin bir javascript nesnesi olması. Bu durumun çözümü için kullanacağımız komut ise şu.
JSON.stringfy(obj);
Bu komutun amacı içerisine girilen javascript nesnesini string formatına çevirir. Biz de yukarıda belirttiğimiz hata veren komut satırımızı şu şekilde değiştireceğiz.
JSON.stringfy(Veri);
Bu işlemi yaptıktan sonra sorunumuzun çözülmüş olduğunu göreceğiz.