PHP-скрипт возвращает ошибку 403 Forbidden, если Content-Length не указан

Я использую общую учетную запись веб-хостинга на сервере Linux. Мой серверный PHP-скрипт может быть вызван из моего Windows-приложения (клиента) с помощью Windows-сокетов. Не показывая слишком много кода (который является базовым соединением по протоколу HTTP с портом 80), клиентское приложение может отправить следующий заголовок скрипту PHP:

POST 
/php/checkupdates.php?ver=1.2.3.4&ref=&nam=some%20name
 HTTP/1.0\r\n
Accept: text/plain, text/html, */*\r\n
Accept-Language: en-us\r\n
Accept-Encoding: deflate\r\n
User-Agent: My own agent\r\n
Host: 
mydomain.com
\r\n
\r\n

Но по какой-то причине этот скрипт возвращает 403 Forbidden ошибка. Интересно, что если я загружу этот же URL в веб-браузер, скрипт PHP будет работать нормально.

Чисто методом проб и ошибок я обнаружил, что если я добавлю следующую строку в заголовок, мой PHP-скрипт начнет работать нормально:

Content-Length: 0\r\n

Ну, это все хорошо. Но проблема в том, что для добавления этой строки мне нужно обновить все клиентские (Windows) приложения, которые мои пользователи загружали и использовали некоторое время. Другими словами, это не так просто сделать.

Так что я надеялся исправить это со стороны сервера (то есть PHP). Есть идеи?

PS. Я также должен отметить, что это работало, когда я принимал хостинг у предыдущей веб-хостинговой компании (т.е. без Content-Length линия.)

PS2. Я пытался связаться с моим текущим хостинг-провайдером, но его техподдержка постоянно спрашивает мой публичный IP. (Возможно, внесите меня в белый список, чтобы я не увидел эту ошибку, которая не решит ее для других.) Другими словами, я не совсем уверен, что они знают, что делают. Поэтому я подумал сначала понять это, прежде чем снова связаться с ними.

0 ответов

Другие вопросы по тегам