Ruby용 Rack 미들웨어에서는cheme#request 메소드를 사용하여 현재 요청 URL의 체계를 얻는 것이 간단합니다. 그러나 Go에서는 http.Request.URL.Scheme 필드가 빈 문자열을 반환하므로 개발자는 당황하게 됩니다.
Go에서 요청 URL 체계를 잠금 해제하는 열쇠는 다음에 있습니다. HTTP와 HTTPS 요청을 모두 처리해야 한다는 점을 인식합니다. http.ListenAndServe() 및 http.ListenAndServeTLS() 기능을 모두 사용하여 두 프로토콜을 모두 제공합니다.
HTTPS는 TLS를 통한 HTTP로서 내부에 TLS 속성을 제공합니다. *http.TLS 연결에 대한 정보를 공개하는 요청입니다. 이 속성을 조사하면 사용된 프로토콜을 식별할 수 있습니다.
<code class="go">func handler(w http.ResponseWriter, r *http.Request) { if r.TLS == nil { // the scheme was HTTP } else { // the scheme was HTTPS } } func main() { http.HandleFunc("/", handler) go func() { log.Fatal(http.ListenAndServeTLS(":8443", "localhost.crt", "localhost.key", nil)) }() log.Fatal(http.ListenAndServe(":8080", nil)) }</code>
이 접근 방식은 요청이 HTTP인지 HTTPS인지에 관계없이 원활하게 처리되도록 보장하여 신뢰할 수 있는 메커니즘을 제공합니다. URL 구성표를 요청하세요.
위 내용은 Go에서 요청 URL 체계를 어떻게 결정합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!