Проиллюстрирую ответы выше примером на Python (запускать через CGI).
Вот такой скрипт. Всё что находится до пустого
print() это заголовки HTTP:
#!/usr/bin/env python3
print("Status: 403 Forbidden")
print("Content-type: text/html")
print()
print("<h1>Hello world!</h1>")
Если запросить страницу через
curl, то мы получим
тело ответа:
$ curl http://example.ru/cgi-bin/scr.py
<h1>Hello world!</h1>
Если запросить заголовки, то 403, как и указано в скрипте:
$ curl -I http://example.ru/cgi-bin/scr.py
HTTP/1.1 403 Forbidden
Server: nginx/1.16.1
Date: Tue, 17 Nov 2020 12:01:18 GMT
Content-Type: text/html; charset=utf-8
Connection: keep-alive
Vary: Accept-Encoding