GÜNCELLEME: XDomainRequest'te herhangi bir zamana yatırım yapmamanızı öneririz, çünkü çok sayıda kısıtlamaya sahip çok kötü bir uygulama. Temelde sadece ssl olmayan sunuculara GET istekleri için çalışır, bu yüzden jsonp veya herhangi bir şekilde kullanabilirsiniz.CORS jQuery ve XDomainRequest içinde IE8/9
Çapraz etki alanı API'sini çağırmak için CORS kullanıyorum, ancak Internet Explorer sorunları veriyor. CORS
JQuery refuses
XDomainRequest için yerel destek sağlamak üzere .. ancak işler için alamayan,XDomainRequest
nesnesi aracılığıyla IE8 ve IE9 mümkün olmalıdır, ancak birkaç jQuery eklentileri bu desteği eklemek için önerilmektedir. Bu
topic, bu tür iki eklentiyi önerir:
jQuery.XDomainRequest.js ve
xdr.js, çalıştığı bildirilmiştir. Afaik, eklentiler otomatik olarak
jQuery.ajax
davranışını geçersiz kılmalıdır. Başka bir eklenti
here buldum.
CORS özellikli bir sunucuya ajax istekleri gerçekleştiren ilgili eklentileri jQuery.XDomainRequest ve xdr ve jquery.ie.cors ile küçük bir demo sayfası koydum. Sayfalar Chrome ve Firefox'ta çalışıyor, ancak IE8/9 anında bir izin reddedildi (istekte bulunmadan önce bile). Bu MSDN post, başka bir işleyici ekleme xhr.onprogress = function() {};
önerir ama bunu denedim ve bu da çalışmıyor.
Ne yaptığımın bir ipucu yanlış? Ayrıca MS sanal sunucusu kullanarak IE8 ile test ettim, ama aynı problemi var.
Düzenleme: Tamam, sorunun bir kısmı HTTPS üzerinden POST kullandığımı anladım. Görünüşe göre XDomainRequest, HTTPS üzerinden CORS'e izin vermiyor. HTTP'ye geçebilirim ama gerçekten POST'a ihtiyacım var.
Düzenleme2: Bu öykünün sonu için bkz. this issue on github. HTTP POST kullanırken xDomainRequest yalnızca istek gövdesini (argümanlar) text/plain
olarak kodlayabilir. Bu hemen hemen herkesin değersiz olmasını sağlar, çünkü herkes veya multipart/form-data
kullanır.
Microsoft, IE8 ile ücretsiz sanal görüntüleri sağlar jQuery eklentisi kullanabilirsiniz anla. (sadece bir ipucu) –
Teşekkürler. IE8'de aynı sorun. – Jeroen
IE8'de jQuery CORS ajax çalışmasını yapmak için basit bir korsanlık/hile var ... bence StackOverflow'da ilgili sorulara cevaplar arayarak bulabilirsiniz. – c69