개발 서버의 상대 URL 액세스
질문:
Go HTTP 서버를 실행할 때 개발 중에 r.URL.Host 및 r.URL.Scheme이 수신에 대해 비어 있는 이유는 무엇입니까? 요청?
답변:
r.URL에 호스트 및 구성표 정보가 없으면 개발 중에 서버에 액세스할 때 상대 URL을 사용하기 때문에 발생합니다. 상대 URL은 절대 URL과 달리 호스트나 구성표를 지정하지 않습니다.
상대 요청:
일반적으로 웹 브라우저는 다음과 같은 절대 요청을 발행합니다.
GET http://localhost:8080/ HTTP/1.1 Host: localhost:8080
그러나 로컬 개발 서버에 직접 액세스하는 경우 브라우저는 상대 경로를 사용할 수 있습니다. 요청:
GET / HTTP/1.1 Host: localhost:8080
이 상대 요청에서는 경로만 지정되고 호스트와 체계는 생략됩니다. 결과적으로 서버가 이러한 요청을 받으면 r.URL.Host 및 r.URL.Scheme은 비어 있게 됩니다.
호스트 정보 액세스:
검색하려면 이 상황에서 호스트 정보를 보려면 http.Request의 r.Host 속성을 사용할 수 있습니다. struct.
host := r.Host
절대 요청(선택 사항):
항상 절대 요청을 수신하도록 하려면 HTTP 프록시를 사용할 수 있습니다. 프록시를 사용할 때 프록시는 절대 요청을 서버에 전달하고 r.URL.Host 및 r.URL.Scheme에는 예상 값이 포함됩니다.
IsAbs() 확인:
r.URL의 IsAbs() 메서드를 사용하여 요청의 URL이 절대 URL인지 상대 URL인지 확인할 수도 있습니다. 구조체:
isAbsoluteURL := r.URL.IsAbs()
위 내용은 My Go 개발 서버에서 r.URL.Host 및 r.URL.Scheme이 비어 있는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!