2011-11-18 4 views
1

XDomainRequest을 사용하여 IE에서 POST 요청을하고 있습니다. XDomainRequest는 자신의 헤더에 Content-Type을 보내지 않으며 not possible to set a custom header입니다. 나는 이것으로 인해 PHP가 포스트 변수를 $_POST에 두지 않는다고 생각한다.잘못된 헤더로 POST 매개 변수를 가져 오는 방법

내가 file_get_contents("php://input")을 사용하면 매개 변수가 전송되는 것을 볼 수는 있지만 매개 변수를 깨지 않고 올바르게 구문 분석하는 방법을 모르겠습니다. PHP가 POST 매개 변수를 수집하도록 강제하는 방법이 있습니까? 또는 변수를 안전하게 얻으려면 어떻게해야합니까?

print_r($_REQUEST, true); 
echo file_get_contents("php://input"); 

파이어 폭스와 함께 잘 작동 : 내가 가지고있는 PHP 측면에서

jQuery.post('http://domain.de/io/login', '[email protected]&password=xxx', function(response) 
{ 
    if (console) console.log(response); 
    alert('response: ' + objectToString(response)); 
}); 

: 내가 jQuery를에 XDomainRequest를 얻을이 전화를 걸 this transport을 사용하고

. 그러나 Firefox는 전송을 사용하지 않습니다.

+5

일부 헤더가 있거나없는 경우에도 POST 변수가 마술처럼 사라지지 않습니다. 요청을 보내는 방법을 코드로 보여주십시오. – CodeCaster

+1

'PHP가 $ _POST에 post 변수를 두지 않을 것 같습니다. '이 거짓 주장은 약점입니다. 사실로 돌아와! :) –

+0

예제 코드를 잘라내는 것은 쉽지 않습니다. 그러나 php : // 입력이 변수를 포함하고 $ _REQUEST가 포함되지 않는 것은 어떻게 가능합니까? 볼 수있는 유일한 차이점은'getallheaders()'에서 얻은 요청 헤더입니다. – PiTheNumber

답변

3

@hakre : 감사합니다 많이. 귀하는 document 아무도 여기 belives 없습니다 대해 설명 : 요청의

몸이 의 Content-Type 헤더에 따라 해석되어야한다.

정확히 내가 필요한 것을 수행하는 parse_str()도 언급합니다. 이 PHP에 의해 설정되지 않은 경우

여기 내 코드는 $ _POST를 채우기 위해 :

if (count($_POST) == 0) 
{ 
    $request_body = file_get_contents("php://input"); 
    parse_str($request_body, $_POST); 
} 

나는 이것에 대한 당신의 명성을주고 싶지만 내가 어떻게 알 수 없습니다. 어쨌든 당신은 내게서 +50을 얻었으니 괜찮을 것입니다.

-2

내가 jQuery.post() 설명서에서 볼 수 있듯이, 데이터 매개 변수는 다음과 같은 형식이어야합니다 :

jQuery.post('http://domain.de/io/login', {email: "[email protected]", password: "xxx"}, function(response) 
{ 
    if (console) console.log(response); 
    alert('response: ' + objectToString(response)); 
}); 
+0

매뉴얼에서 : "맵 또는 문자열". Firefox에서 문자열로 잘 작동합니다. – PiTheNumber

관련 문제