Sua abordagem tem vários problemas.
Sequências de escape
As seqüências de escape não são respeitadas, a menos que você use a opção -e
.
echo -e 'HTTP/1.1 200 OK\r\n'
Sem -e
, você está enviando as barras invertidas e as letras textualmente. O acima forma uma linha de status HTTP completa.
Protocolo
A linha de status sozinha não constitui uma resposta. O formato requer dois CRLFs
- Um como parte da própria Linha de Status
- Um para terminar o cabeçalho respnse
Tente isso
echo -e 'HTTP/1.1 200 OK\r\n\r\n'
invocação de netcat
A -c
flag está completamente errada, porque espera um argumento de comando.
echo -e 'HTTP/1.1 200 OK\r\n\r\n' | nc -l -p $port
Conteúdo
Mesmo com isso, curl
será bloqueado após receber a resposta, porque está aguardando que o servidor forneça um corpo. Você pode enviar mais dados para nc
ou escolher uma resposta mais apropriada.
echo -e 'HTTP/1.1 204 No content\r\n\r\n' | nc -l -p $port
Observe que curl
imprimirá apenas o que recebe - nada. Experimente curl -v
para ter uma ideia do que está acontecendo.