2013-01-23 2 views
1

Codeigniter-PHP 코드로 서버에 Ajax 요청을하는 웹 응용 프로그램이 있습니다. Ajax 요청은 로컬 서버에서는 제대로 작동하지만 애플리케이션이 원격 서버에서 호스팅되는 경우에는 제대로 작동하지 않습니다. 콘솔 오류는 다음과 같습니다Ajax 요청은 원격 서버에서는 작동하지만 로컬 서버에서는 작동하지 않습니다. (Codeigniter 포함)

XMLHttpRequest cannot load http://localhost/CI-example/index.php/control/controlHome. Origin http://www.page.com is not allowed by Access-Control-Allow-Origin. 

놀랍게도, 요청이 응답 서버에서 만들어진 것이 아니라. 캡처

AJAX_URL = "http://www.page.com/CI-example/site/index.php/control/controlHome"; 

그리고 다음 오류 : 또한 내가 함께 해봤

AJAX_URL = "http://localhost/CI-example/site/index.php/control/controlHome"; 

그러나 :

나는 Ajax 요청에 사용하는 URL은

POST http://www.page.com/webdom/site/index.php/control/controlHome 500 (Internal Server Error) 

어떻게해야합니까?

편집 : www.page.com은 하위 도메인입니다. Ajax 요청에 하위 도메인을 사용하는 경우 일부 구성을 수행해야합니까?

그리고 폴더 조직은 다음과 같습니다 해당 페이지는 당신이 그렇게 액세스 제어-Allow- "라는 특수 헤더를 사용하여 수행 할 수 있습니다하지 않는 한

/CI-example 
---/application/controllers/control.php 
---/system 
---/site/js/ajaxRequest.js 
+0

'AJAX_URL = "/CI-example/site/index.php/control/controlHome"'을 사용해 보셨나요? AJAX는 내부 요청에만 유효하기 때문에 호스트 이름을 포함 할 필요는 없습니다. –

+0

리디렉션이 가능합니까? 별도의 탭에서 URL을 호출하고 개발자 도구의 네트워크 탭을보십시오. – Thomas

+0

@AustinMullins, 나는 그것을 시도했지만 오류는 질문의 마지막이다 – vicenrele

답변

0

당신은 다른 도메인에 AJAX를 사용하여 HTTP POST 요청을 할 수 없습니다 유래".

로컬 호스트가 page.com과 다른 이유는 이것이 작동하지 않는 이유입니다.

+0

"page.com"이 작동하지 않습니다. – vicenrele

+0

소스 요청이 대상 요청 도메인과 동일한 도메인에서 시작된 경우 오류가 발생하지 않습니다. – Dean

+0

그래. 하지만 그 오류가 발생 – vicenrele

0

http://www.page.com의 URL에 대한 응답은 페이지 실행 중에 문제가 발생했다고 말합니다. PHP 오류 로그를 통해 무엇을 찾을 수 있는지 알아보십시오.

ini_set('display_errors', 1) 줄을 추가하면 오류 처리기의 ajax 요청에 오류가 반환 될 수 있습니다. 사용 후 라인을 제거하는 것을 잊지 마라. 이것을 프로덕션 코드에두기를 원하지 않는다.

0

번째 오류 : 500 (Internal Server Error)

이 서버 측에서 오류가 있었다 수단 - 교차하지 출처 정책 문제.
이것은 아마도 PHP 스크립트를 실행하는 중에 발생하는 오류 일 것입니다.

하여 오류 로그 확인이 시도 (예를 들어, 당신이 표준 LAMP 스택을 사용하는 경우, 오류 로그 어딘가에 /var/log/apache2/에 있어야한다)

0

http://localhost/CI-example/index.php/control/controlHome 

대신

http://localhost/CI-example/site/index.php/control/controlHome 
ajax URL에

폴더 구조에서와 같이 URL에 'site'를 포함 할 필요가 없습니다.

1

서버에 아약스 요청을 보내는 동안을 보내는 중입니다.나는 오류가 서버 측에서 것을 확신하고, 거기에 다음과 같은 수 있습니다 이유 -

  1. 모든 코드에서 잘 경우, 다음 base_url 당신이 요청하는 것과 다를 수 있습니다. 예. 문제가 발생할 수 있습니다. 예를 들어 웹 응용 프로그램을 호스팅하고 base_urlwww.mysite.com이고 mysite.com을 요청한 경우입니다.
  2. 다음 이유는 프로젝트를 Windows에서 개발했거나 대소 문자를 구별하는 시스템을 개발했지만 서버와 같은 모든 Linux에 업로드 할 때 모든 파일 이름이 대소 문자를 구분한다는 것입니다. 예를 들어, 주어진 모델 파일 이름이 MyModel.php이지만 모델을로드하면 특정 클래스를 찾을 수 없음과 같은 오류가 생성됩니다.
관련 문제