Почему сервер на Go не открывает файл index.html?

Почему сервер не открывает файл index.html из указанной директории при обращении к URL 127.0.0.1:902/index.html?

```go
func allRout(myFileServer http.Handler) http.HandlerFunc {
    return func(w http.ResponseWriter, r *http.Request) {
        myFileServer.ServeHTTP(w, r)
    
        fmt.Println("Тест: Сработал общий_маршрут "/".")
    }
}

func main() {

    var myFileServer = http.FileServer(http.Dir("C:/MyProject/www/"))

    var mux = http.NewServeMux()

	mux.HandleFunc("/", allRout(myFileServer))     // общий маршрут

	var serv = &http.Server {
        Addr:         "127.0.0.1:902",
        Handler:      mux,
        ReadTimeout:  15 * time.Second,
        WriteTimeout: 15 * time.Second,
	}
		
	log.Fatal(serv.ListenAndServeTLS("C:/MyProject/cert.pem", "C:/MyProject/key.pem"))
}
```

Почему при обращении по URL 127.0.0.1:902/index.html сервер не открывает файл index.html из указанной директории?Ошибка в браузере: Error 400. Ошибка в консоли: http: TLS handshake error from 127.0.0.1:62220: EOF.
  • 29 декабря 2023 г. 21:07
Ответы на вопрос 1
Ошибки, которые вы видите, связаны с ошибкой в TLS-соединении. 

Ошибка "Error 400" означает "Bad Request" и обычно происходит из-за проблем с форматированием или содержанием HTTP-запроса.

Ошибка "TLS handshake error: EOF" означает, что TLS-соединение было преждевременно закрыто без достижения успешного согласия о безопасности.

Однако, основная проблема здесь заключается в том, что вы используете функцию `ListenAndServeTLS`, которая ожидает, что сервер будет использовать TLS-сертификаты. 

В вашем случае, вы не используете TLS-сертификаты, поэтому вам нужно заменить `ListenAndServeTLS` на `ListenAndServe`. 

Пример исправленного кода:

```go
func allRout(myFileServer http.Handler) http.HandlerFunc {
    return func(w http.ResponseWriter, r *http.Request) {
        myFileServer.ServeHTTP(w, r)
    
        fmt.Println("Тест: Сработал общий_маршрут \"/\".")
    }
}

func main() {
    var myFileServer = http.FileServer(http.Dir("C:/MyProject/www/"))

    var mux = http.NewServeMux()

    mux.HandleFunc("/", allRout(myFileServer)) // общий маршрут

    var serv = &http.Server {
        Addr:         "127.0.0.1:902",
        Handler:      mux,
        ReadTimeout:  15 * time.Second,
        WriteTimeout: 15 * time.Second,
    }
        
    log.Fatal(serv.ListenAndServe())
}
```

После внесения этих изменений, сервер должен быть способен открыть файл `index.html` при обращении к URL `http://127.0.0.1:902/index.html`.
Похожие вопросы