>백엔드 개발 >Golang >상대 HTTP 요청에서 request.URL.Host 및 request.URL.Scheme이 비어 있는 이유는 무엇입니까?

상대 HTTP 요청에서 request.URL.Host 및 request.URL.Scheme이 비어 있는 이유는 무엇입니까?

DDD
DDD원래의
2024-12-17 01:33:23126검색

Why Are request.URL.Host and request.URL.Scheme Blank in Relative HTTP Requests?

개발 서버에서 URL 호스트 및 구성표 확인: 왜 비어 있나요?

상대 경로에서 HTTP 서버에 그대로 액세스하는 경우 개발 환경에서는 일반적으로 특정 URL 속성이 공백으로 나타날 수 있습니다. 특히 request.URL.Host 및 request.URL.Scheme은 빈 값을 반환할 수 있습니다.

이 문제가 발생하는 이유는 무엇입니까?

일반적으로 다음과 같은 경우 브라우저에서 실행되는 상대 HTTP 요청입니다. 서버에 로컬로 액세스하면 명시적인 호스트 및 구성표 정보가 부족합니다. 이는 요청에 이러한 세부 정보를 포함하는 HTTP 프록시에서 사용하는 절대 URL과 대조됩니다. 상대 요청의 경우 http.Request.URL 객체에서 원시 URL만 사용할 수 있습니다.

HTTP 호스트에 액세스

HTTP 호스트를 검색하려면, http.Request 구조체의 Host 속성에 액세스할 수 있습니다. 이는 요청의 호스트 헤더에 지정된 호스트 이름과 포트를 제공합니다.

상대 URL과 절대 URL 구별

다음을 호출하여 요청이 상대 URL을 사용하는지 아니면 절대 URL을 사용하는지 결정할 수 있습니다. http.Request.URL의 IsAbs() 메서드. IsAbs()가 false를 반환하는 경우 해당 URL은 상대적이며 호스트 또는 구성표 정보를 포함하지 않는 것입니다.

Netcat 사용 예

차이점을 보여주기 위해 netcat을 사용할 수 있습니다. 상대 경로를 사용하여 HTTP 요청을 보냅니다.

cat my-http-request-file | nc localhost 8080

my-http-request-file에는 다음 내용이 포함되어야 합니다. HTTP 요청 형식:

GET / HTTP/1.1
Host: localhost:8080

이 요청은 처리기에서 빈 r.URL.Host 및 r.URL.Scheme 값을 반환합니다.

위 내용은 상대 HTTP 요청에서 request.URL.Host 및 request.URL.Scheme이 비어 있는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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