Ajax kullanarak veri çekme
Aşağıdaki kod bloğundan uzaktan veri çekmeye çalışıyorum ama error hatası veriyor verileri listeyemiyorum hata da göremiyorum açıkcası. Yardımcı olursanız sevinirim :)
$.ajax({
url: 'http://application.yesilyurtavm.com/yesilyurtapi/stores.php',
xhrFields: {
withCredentials: false
},
headers: {
"Access-Control-Allow-Origin: ": "*",
"Access-Control-Allow-Methods: ": "GET",
"Access-Control-Allow-Headers: ": "Authorization",
},
type: "GET", /* or type:"GET" or type:"PUT" */
contentType: "application/json",
dataType: "json",
success: function (data) {
console.log(data);
},
error: function () {
console.log("error");
}
});
Kısaca ben kendi sunucumu yorarken sen tarayı tarafından sürekli istek atarak benim sunucumu yorma eğer benden gerçekten bir bilgiye ihtiyaç duyuyor isen sende kendi sunucunu biraz yorki boşu boşuna istek atma bana demiş oluyorsun bir nevi
http://application.yesilyurtavm.com/yesilyurtapi/stores.php Sitesi, sayfanın başına şu kodu eklemiş olsaydı eğer
header( 'Access-Control-Allow-Origin: *' );
Ajax isteklerinde bir problem yaşamayacaktın
Buradan veriyi şu şekilde alabilirsin önce kendi sunucunda veri-al.php adında bir dosya oluştur ve file_get_contents ile bu sitedeki veriyi geri döndür daha sonra kendisiten.com/ver-al.php dosyasına ajax isteği gönderebilirsin
localhost üzerinde çalıştığında örneğin http://localhost/proje1/ alanında çalışırken http://localhost/baska-proje/veri-al.php dosyasına istek gönderdiğindede bu hataya düşersin tarayıcı bunu izin vermeyen başka bir site olarak görür taki "veri-al.php" dosyasının başında "Access-Control-Allow-Origin" izini verene dek
Bilgi 1:
("Access-Control-Allow-Origin": "*") tüm sitelere izin ver demek oluyor yıldız yerine bir domain adı girerek sadece o domaine izin verebilirisin veya bir kaç domain'e
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Origin
Bilgi 2:
Tarayıcının bu özelliğini manipüle etmek istiyor isen chrome için şöyle bir eklenti var eklentiyi etkinleştirerek izin vermeyen sitelere ajax isteği yapabilirsin
Eklentinin yaptığı şey aslında Siteden dönen başlıkların arasına "Access-Control-Allow-Origin" eklemek, ajax bu değeri kontrol ediyor ve var olduğunu görünce izin veriyor
https://chrome.google.com/webstore/detail/allow-cors-access-control/lhobafahddgcelffkeicbaginigeejlf?hl=tr