http 패키지를 사용하여 Go에서 간단한 HTTP 서버를 구현할 때 요청에 공백 값이 나타날 수 있습니다. 개발 중 URL.Host 및 request.URL.Scheme. 이러한 필드가 요청에 대한 정보를 제공할 것으로 예상하므로 이는 혼란스러울 수 있습니다. 이 동작이 발생하는 이유를 조사하고 누락된 데이터를 얻는 방법을 살펴보겠습니다.
예제 코드에서 요청 메시지는 상대 경로를 통해 수신됩니다. 이는 클라이언트의 HTTP 요청에 호스트와 체계가 명확하게 지정된 절대 URL이 포함되어 있지 않음을 의미합니다. 대신 클라이언트는 상대 경로를 사용하여 이러한 필드를 비워 둡니다.
그러나 요청이 HTTP 프록시를 통해 이루어졌거나 절대 URL을 사용하여 이루어진 경우 request.URL.Host 및 request.URL.Scheme은 프록시나 클라이언트가 이 정보를 명시적으로 제공하므로 채워져야 합니다.
이를 확인하려면 netcat과 같은 도구를 사용하여 다양한 요청 형식으로 서버를 테스트할 수 있습니다. 상대 경로로 요청을 보내면 빈 호스트 및 스키마 필드가 생성되지만 절대 URL을 사용하면 해당 필드가 채워집니다.
request.URL.Host에만 의존하는 대신 호스트 필드에 직접 액세스할 수 있습니다. 요청이 상대 경로를 사용하는지 절대 경로를 사용하는지에 관계없이 호스트 정보를 제공하는 http.Request 구조체에서.
또한 핸들러가 수신한 요청이 절대 경로인지 또는 절대 경로인지 확인할 수 있습니다. request.URL 구조체의 IsAbs() 메서드를 사용하여 상대적입니다. 이를 통해 상대 경로를 사용하여 요청을 적절하게 처리할 수 있습니다.
위 내용은 My Go HTTP 개발 서버에서 request.URL.Host 및 request.URL.Scheme이 비어 있는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!