Ben raylar ve üzüm (api.domain.com) yazılmış bir API bağlanan bir JS istemcisi (app.domain.com) sahip çağırır. CORS kuruldu ve iki etki alanı arasında günlük girişi api.domain.com sunucusunda gerçekleştirilirken paylaşılan bir çerezim var.Varsayılan ayarlar
Bu JS uygulama Spine.js yüzden her şey CoffeeScript yazılır kullanıyor.
@item.destroy
Bu API için DELETE isteği gönderir: Yani sadece kullanmak bir silme isteği göndermek için.
$.ajax({
url: "http://api.domain.com/tasks/" + @item.id,
type: "DELETE",
crossDomain: true,
xhrFields: {
withCredentials: true
}
})
Ve bu mükemmel çalışıyor: çerez istek başlığında birlikte gönderilmez Ancak bu yüzden bu bir kod yukarıdaki satırı değiştirmek zorunda kaldı. Çerezin gönderilmesi ve işlemin doğrulanması için istek üzerine "Erişim-Kontrol-İzin-Kimlik Bilgileri: gerçek" bir yanıt başlığı gönderecektir. Bununla birlikte, bu yolla, her istek için gerçekten çok zaman harcayan ve ayrıca Omurga çerçevesinin faydalarını geçersiz kılan kod satırları yazmam gerekecek.
jQuery'de varsayılan ajax ayarlarını yapmanın mümkün olduğunu biliyorum, böylece sonraki ajax çağrıları bu ayarları kullanacaktır. Bu yüzden denedim: temelde elle her ajax arama için koyardı aynı ayarlardır
jQuery.ajaxSetup({
headers: {
"X-Requested-With": "XMLHttpRequest",
"Access-Control-Allow-Credentials": "true"
}, crossDomain: true
});
. Ancak bu yaklaşım, API'ye gönderilen istekte bu başlıkları görmeme rağmen çalışmaz (ateşböceği aracılığıyla).
Bir şey mi eksik?
Şimdiden teşekkürler!
Dav
deneyebilirsin: '$ .ajaxSetup ({ crossDomain: true, xhrFields: {withCredentials: true}}); '? – Kaeros