2017-05-02 2 views
1

내 서버에서 AJAX를 통해 전송되지 않는 postdata와 관련된 문제점을 확인했습니다.AJAX postdata가 로컬 호스트에서 작동하지만 (Apache) 서버가 아님

function my_custom_ajax(target_page, target_element , postdata_contents) { 

    // Sending the XMLHttpRequest as postdata 
    var xhr = new XMLHttpRequest(); 
    xhr.open("POST", target_page, true); 
    xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;"); 
    xhr.setRequestHeader("Content-length", postdata_contents.length); 
    xhr.setRequestHeader("Connection", "close"); 
    xhr.send(postdata_contents); 

    // Waiting for the request to return 
    xhr.onreadystatechange = return_data; 

    // If all went well, we update the target element 
    function return_data() 
    { 
    if(xhr.readyState === 4) 
    { 
     if(xhr.status === 200) 
     { 
     // We update the target element 
     document.getElementById(target_element).innerHTML = xhr.responseText; 
     } 
     // Throw error in case of 404 or such 
     else 
     document.getElementById(target_element).innerHTML = "XHR can't be loaded"; 
    } 
    // Throw error in case request got interrupted or didn't work out 
    else 
     document.getElementById(target_element).innerHTML = "XHR error"; 
    } 
} 

그것은 다음과 같은 HTML로 호출 :을 디버깅하기 위해, 나는 간단한 AJAX 호출을 테스트하기 위해 자바 스크립트의 다음과 같은 상당히 최소한의 조각 쓴

<div onClick="my_custom_ajax('test_page.php?xhr','my_id','postdata_test');"> 
    Click me 
</div> 
<div id="my_id"> 
    xhr response will appear here 
</div> 

을 만 들어있는 PHP 페이지를 호출 이 :

exit(var_dump($_POST)); 

내가 소유하고 내 아파치 로컬 호스트에서이 코드 조각 또는 다른 아파치 서버를 실행, 그것은 POSTDATA로 postdata_contents에 무엇이든 통과 않습니다. 출구 (var_dump ($ _ POST)); 제대로 작동하는지 보여 주며 전달 된 postdata의 값을 인쇄합니다.

그러나 작동하지 않는 Apache 서버에서이 동일한 코드를 실행하면 PHP 파일에 따라 postdata가 전달되는 것처럼«배열 (0) {}»이 생깁니다. 여기

는 (죄송합니다, 프랑스어,하지만 분명해야하는 것은 무엇 무엇을) 요구 사항의 파이어 폭스의 개발 도구보기입니다 :

디버그 도구는 POSTDATA 내용이 제대로 전송되고 있음을 보여줍니다 그러나

의 POSTDATA 어떻게 든 통과되지 않았 음을 반환 내용 쇼 :

내 로컬 호스트와 내 다른 아파치 서버에서

는, 모든 것이 POSTDATA 제대로합니다 (위해서 var_dump 메시지가 스타일되지만 쉽게 그것의 요점을 볼 수 있습니다 전달 맨 마지막 단계까지 같은 정확히입니다 이 아파치 서버의 구성과 조롱과 I가 생각할 수있는 디버그 방법과 브레이크 포인트의 모든 노력의 시간 후

, 내 신경도까지 작동됩니다 postdata_test은 $ _POST의 일부)입니다 합리적으로 지금 당장 생각해보십시오. 다른 서버를 사용하거나 새 서버에서 로컬 Apache 구성 파일을 복사 할 수있는 옵션이 없으므로이 질문을 모두에게 미루어 다른 사람이 알아낼 수 있거나 비슷한 것을 만나기를 바랍니다. 사전에

감사합니다, 에릭 B.는

답변

1

실수로 자신을 해결 , 나는 mod_dumpio 서버에서 활성화했고이 일을 시작 한 번 나는 그것을 해제.

mod_dumpio가 XHR POST를 거부했지만 일반 HTTP POST를 거부하지는 못했지만 적어도 해결되었습니다.

희망은 다른 누군가에게 도움이되기를 바랍니다.

(예를 들어, 내 예제의 postdata 쿼리가 형식이 잘못되었거나«postdata_test»가 아닌«postdata_test =»였음을 알고 있습니다. 따라서 내 상황에 갇혀 있고 내가 한 동일한 테스트)

관련 문제