Ruby/Rack에서는 Scheme#request를 사용하여 현재 요청 URL의 스키마를 검색할 수 있습니다. 그러나 Go에서는 http.Request.URL.Scheme이 빈 문자열을 반환합니다. 체계를 올바르게 얻으려면 다음 접근 방식을 고려해야 합니다.
HTTP 및 HTTPS 프로토콜을 제공하려면 동일한 핸들러로 http.ListenAndServe() 및 http.ListenAndServeTLS()를 동시에 사용해야 합니다. http.ListenAndServe()만 사용하면 HTTP 프로토콜만 수신하게 됩니다.
TLS를 통한 HTTP인 HTTPS는 http.Request 객체에 TLS 속성을 제공합니다. 이 속성은 요청에 사용된 TLS에 대한 정보가 포함된 *tls.ConnectionState 객체를 반환합니다.
클라이언트가 사용하는 체계를 확인하려면 요청의 TLS 속성을 검사하세요.
다음은 이 접근 방식을 보여주는 업데이트된 코드 예제입니다. :
<code class="go">package main import ( "fmt" "log" "net/http" "net/http/httputil" ) 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>
위 내용은 Go에서 현재 요청 URL의 구성표를 결정하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!