Ben bir site üzerinde çalışan ve 3 farklı şubesi var duyuyorum. Tipik dev-> evre-> üretim durumu.
3 farklı URL'ler Tüm 3 Miktarı:
eşya: http://www.domain.com
aşama: http://www.domain.com/stage
Yani ben yolları dosyada herhangi bir değişiklik olmadan tüm 3 üzerinde çalışan evrensel kodu var çalışıyorum.
Ben sadece bu özel şube için yapılandırılmış ne olursa olsun CodeIgniter kurulumu için base_path
var dizi var olduğunu ulaşmak için.
var base_url = "<?=base_url();?>"; // This sets base_url accordingly.
$.post(base_url + 'login/ajaxLogin', { // See note below
login_email: $('#login_email').val(),
login_pass: $('#login_pass').val(),
},
function(data) {
if(data == 'true') {
window.location.href = base_url;
} else {
$('h2').replaceWith('<h2 style="color:#b81900;">Login Failed</h2>');
return false;
}
});
Above code works fine in Chrome. But it does not work in Safari and Firefox.
In Firefox it fails silently, and in Safari I get "Unable to load resource: cancelled"
NOTE: i base_url
kaldırmak ve /login/ajaxLogin
, /dev/login/ajaxLogin
veya /stage/login/ajaxLogin
her şey mükemmel çalışıyor sadece ayarlanmış script yolu ise .
Ben Çapraz etki betik kısıtlama isabet olabilir, ama ben emin değilim neden görünür?
Evet, Same Origin Policy ile tanıdık ve evet, ben jQuery sitesinde gördük:
Due to browser security restrictions, most "Ajax" requests are subject to the same origin policy; the request can not successfully retrieve data from a different domain, subdomain, or protocol.
If a request with
jQuery.post()
returns an error code, it will fail silently unless the script has also called the global.ajaxError()
method.
Yukarıdakilerin hiçbiri benim etki alanı içinde kalıyorum gibi benim durumumda geçerli, bu yüzden neler olduğunu tamamen emin değilim, ama gerçekten bu konuya bir çözüm bulmak istiyorum.