>백엔드 개발 >Golang >My Go 개발 서버에서 r.URL.Host 및 r.URL.Scheme이 비어 있는 이유는 무엇입니까?

My Go 개발 서버에서 r.URL.Host 및 r.URL.Scheme이 비어 있는 이유는 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-12-15 18:56:10886검색

Why are r.URL.Host and r.URL.Scheme Empty in My Go Development Server?

개발 서버의 상대 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.