Добавьте в конец каждой строки \r\n, а после всего запроса сделайте это еще раз. Иначе сервер не поймет как разделять заголовки между собой и как определить конец запроса.
package main
import (
"bufio"
"fmt"
"log"
"net"
)
func main() {
conn, err := net.Dial("tcp", "ya.ru:80")
if err != nil {
log.Fatal(err)
}
fmt.Fprintf(conn, "GET / HTTP/1.1\r\n")
fmt.Fprintf(conn, "Host: localhost\r\n")
fmt.Fprintf(conn, "User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:38.0) Gecko/20100101 Firefox/38.0\r\n")
fmt.Fprintf(conn, "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n")
fmt.Fprintf(conn, "Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3\r\n")
fmt.Fprintf(conn, "Connection: close\r\n")
fmt.Fprintf(conn, "\r\n")
for {
message, err := bufio.NewReader(conn).ReadString('\n')
if err != nil {
log.Fatal(err)
}
fmt.Print("Message from server: " + message)
}
}