Python + Curl - как исправить «Пустой ответ с сервера» - PullRequest
0 голосов
/ 05 мая 2019

Я использую https://gist.github.com/bradmontgomery/2219997 код Python для настройки http-сервера.Для моего использования я просто добавляю несколько строк в метод do_POST:

def do_POST(self):
        self._set_headers()
        self.wfile.write("POST!")
        content_length = int(self.headers['Content-Length'])
        print(content_length )
        post_data = self.rfile.read(content_length)
        print(post_data)

Я хочу отправить файл через Curl:

curl -F "file=@file.txt" "http://myServer.noip.me:22222/" --trace-ascii debugdump.txt

Сторона клиента: Ответ Curl:

 curl: (52) Empty reply from server

Сторона сервера: сервер печатает значение content_length, а затем полностью зависает в строке «self.rfile.read (content_length)».Он не печатает «print (post_data)».

Брандмауэр был отключен с обеих сторон.

Последние строки из debugdump.txt (на стороне клиента):

== Info: Empty reply from server
== Info: Connection #0 to host myServer.noip.me left intact

Что я пропустил?

1 Ответ

1 голос
/ 05 мая 2019

Empty reply from server означает, что сервер закрыл соединение без ответа что-либо , что является нарушением протокола HTTP.

Это никогда не должно происходить с надлежащим сервером, поэтому он сигнализирует, что что-то серьезно не так на стороне сервера.

Иногда это происходит из-за того, что сервер был наивно реализован и аварийно завершает работу или ведет себя неправильно при неожиданном запросе от клиента. Тогда лучший шанс сделать эту работу - попытаться изменить запрос таким образом, чтобы он был более похож на тот, который может ожидать плохо написанное серверное программное обеспечение.

Это вопрос угадывания. Или поступите правильно и обратитесь к администраторам сервера и попросите их починить свой сервер.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...