Как получить параметры POST с неправильным заголовком

Я делаю запрос POST из IE с помощью XDomainRequest . XDomainRequest не отправляет Content-Type в свой заголовок, и невозможно установить настраиваемый заголовок . Я думаю, это заставляет PHP не размещать post-переменные в $_POST .

Я вижу, что параметры отправляются, если я использую file_get_contents("php://input") но я не уверен, как правильно их разобрать, не нарушая их. Есть ли способ заставить PHP собирать параметры POST? Или как я могу получить переменные безопасно?

Я использую этот транспорт, чтобы получить XDomainRequest в jQuery и сделать этот вызов:

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

На стороне PHP у меня есть:

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

Прекрасно работает с Firefox. Но Firefox не использует этот транспорт.

@hakre: Большое спасибо. В вашем документе описывается то, что здесь никто не верит:

Тело запроса должно интерпретироваться в соответствии с заголовком Content-Type.

Он также упоминает parse_str (), который делает именно то, что мне нужно.

Здесь мой код для заполнения $ _POST, если он не был установлен PHP:

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

Я хотел бы дать вам репутацию этого, но я не знаю, как это сделать. Во всяком случае, вы получили только 50 от меня, поэтому я надеюсь, что все будет в порядке.

Как видно из руководства jQuery.post() , параметр данных должен быть в следующем формате:

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