Я работаю над сайтом и у меня 3 разные ветки.Типичная dev-> stage-> производственная ситуация.
Все 3 запускаются на 3 разных URL:
prod: http://www.domain.com
stage: http://www.domain.com/stage
dev: http://www.domain.com/dev
Поэтому я пытаюсь использовать универсальный код, который выполняется на всех 3 без каких-либо изменений путей к файлам.
Чтобы добиться этого, я просто установил base_path
var на любой CodeIgniterустановка настроена для этой конкретной ветви.
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;
}
});
Приведенный выше код отлично работает в Chrome.Но это не работает в Safari и Firefox.В Firefox это происходит тихо, и в Safari я получаю "Unable to load resource: cancelled"
NOTE : если я удаляю base_url
и просто устанавливаю путь к сценарию /login/ajaxLogin
, /dev/login/ajaxLogin
или /stage/login/ajaxLogin
все работает отлично.
Похоже, что я могу использовать ограничение междоменных сценариев, но я не уверен, почему?
Да, я знаком с Одинаковая политика происхождения и да, я видел это на сайте jQuery:
Из-за ограничений безопасности браузера большинство запросов "Ajax" подчиняются той же политике происхождения;запрос не может успешно извлечь данные из другого домена, субдомена или протокола.
Если запрос с jQuery.post()
возвращает код ошибки, он будет молча завершаться, если сценарий также не имеетназывается глобальным .ajaxError()
методом.
Ничто из вышеперечисленного не применимо в моем случае, так как я остаюсь в своем домене, поэтому я не совсем уверен, что происходит, но мне бы очень хотелосьнайти обходной путь для этой проблемы.