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