Go 애플리케이션 개발 초기 단계에서 "hello, world" 코드를 사용하여 프레임워크에 익숙해지는 것은 흔한. 그러나 요청 URL에서 호스트 및 스키마 속성에 액세스하려고 하면 예기치 않은 공백 값이 발생할 수 있습니다. 왜 이런 일이 발생합니까?
Go의 HTTP 라이브러리는 요청의 원시 URL을 구문 분석합니다. 다음과 같은 상대 경로를 사용하여 서버에 액세스하는 경우:
GET / HTTP/1.1 Host: localhost:8080
URL 개체의 Host 및 Scheme 필드는 비어 있습니다.
반대로, 프록시에서 서버에 액세스하는 경우 , 다음과 같은 절대 URL이 사용됩니다.
GET http://localhost:8080/ HTTP/1.1 Host: localhost:8080
이렇게 하면 이러한 개체가 적절하게 모집됩니다. 필드.
HTTP 호스트를 얻으려면 http.Request 구조체의 Host 속성을 직접 사용하는 것이 좋습니다.
또한 URL 유형(상대 또는 절대)을 검사하여 확인할 수 있습니다. IsAbs() 메서드:
isAbsoluteURL := r.URL.IsAbs()
이 검사는 두 시나리오를 구별하고 그에 따라 코드 논리를 안내하는 데 도움이 될 수 있습니다.
위 내용은 My Go 개발 서버의 요청 URL에서 호스트 및 구성표 속성이 비어 있는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!