입니다. 사이트에서 작업 중이며 3 개의 분기가 있습니다. 전형적인 dev-> stage-> 생산 상황.
3 개 다른 URL에 모든 3 실행 :
그래서 내가 보편적 인 코드를하려고 그 파일 경로를 수정하지 않고도 모두 3에서 실행됩니다.
이 특정 브랜치에 대해 설치된 CodeIgniter 설치에 대해 base_path
var 집합 만 갖도록하려면.
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에서는 작동하지 않습니다. 파이어 폭스에서 그것은 자동으로 실패하고 Safari에서 나는 "Unable to load resource: cancelled"
참고를 얻을 : 내가 base_url
를 제거하고 /login/ajaxLogin
이 /dev/login/ajaxLogin
또는 /stage/login/ajaxLogin
모든 것이 완벽하게 작동에 불과 스크립트 경로를 설정합니다.
저는 크로스 도메인 스크립팅 제한이 적용되는 것으로 보입니다. 그러나 그 이유는 확실하지 않습니다.
예, 나는 Same Origin Policy 익숙 그래, 내가 jQuery의 사이트에이 보았다 :
인해 브라우저 보안 제한을 대부분 "아약스"요청이 동일한 기원 정책이 적용됩니다; 요청은 도메인, 하위 도메인, 또는 프로토콜에서 데이터를 검색 할 수 없습니다.
jQuery.post()
과 함께 요청하면 스크립트에서도 글로벌.ajaxError()
메서드를 호출하지 않으면 자동으로 실패합니다.
위의 내용은 내 경우 도메인에 머물러 있기 때문에 적용되지 않습니다. 그래서 어떤 일이 일어나고 있는지 잘 모르겠지만이 문제에 대한 해결 방법을 찾고 싶습니다.
첫 번째 어리석은 질문을 할 것이지만 모든 인스턴스에서 동일한 경로를 반환하는 base_path 함수입니까? – jerebear
먼저 PHP에서 실제로 생성되는 Javascript를 찾고, Chrome Developer Tools 또는 Firebug를 사용하여 실패한 요청의 URL을 조회하는 것이 좋습니다. – Matchu
'base_url()'은 url에 후행하는 슬래시를 추가하므로 물건을 던져 버릴 수도있는'http : // url.com // stage/login/ajaxLogin'과 같이 끝날 수도 있습니다. @Matchu가 말했듯이, 생성되는 URL을 확인하십시오. – stormdrain