Переместив один из наших сайтов из Linux с Apache на Windows с помощью IIS (8.5), работающего под управлением PHP 5.6 через FastCGI, мы столкнулись с проблемой что file_get_contents('php://input')
возвращает пустую строку для запросов PUT.file_get_contents ('php: // input'), возвращающий пустую строку с запросом PUT
Я создал следующий тест:
<?php
if (!empty($_SERVER['HTTP_X_REQUESTED_WITH']) &&
strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
die(file_get_contents('php://input'));
}
?>
<!DOCTYPE html>
<html>
<head>
<script src="//code.jquery.com/jquery-2.1.3.min.js"></script>
</head>
<body>
<h2>POST:</h2>
<div id="post"></div>
<h2>PUT:</h2>
<div id="put"></div>
<script>
$.ajax({
url: '?',
data: 'Working',
type: 'POST'
}).then(function(response) {
$('#post').html(response || 'Not working');
});
$.ajax({
url: '?',
data: 'Working',
type: 'PUT'
}).then(function(response) {
$('#put').html(response || 'Not working');
});
</script>
</body>
</html>
что приводит:
POST:
Рабочая
PUT:
не работает
Что может быть причиной этого?
возможно конфликтует с IIS WebDAV-модулем. Также установите флажок «Параметры сопоставления обработчиков». – Deadooshka