Должна быть одна пустая строка между блоком заголовка и телом.Вы не оставили эту пустую строку.
Один из способов - просто объединить нормальные строки:
http_response = "HTTP/1.1 200 OK\n\n" + f.read()
Другой способ - использовать format
или %
:
http_response = "HTTP/1.1 200 OK\n\n%s" % f.read()
Еще один способ - использовать новые f-строки:
http_response = f"""\
HTTP/1.1 200 OK
{f.read()}\
"""
Есть и другие (например, соединение массива строк и т. Д.), Но какой бы метод вы ни использовали, вам нужно убедиться, чтоэтот протокол HTTP соблюдается, что требует наличия этой пустой строки.
Также обратите внимание, что если f.read()
не производит текст, вам понадобятся заголовки, чтобы описать то, что вы передаете, и, возможно, предпринять шаги длязакодируйте это правильно.Вы также были бы "хорошим пользователем сети", если вы вернете правильный Content-Length
, если вы это знаете.См. Википедия для хорошего обзора HTTP и связанных RFC, если вы хотите узнать больше.