Go에서 요청 URL 체계를 결정하는 방법은 무엇입니까?

Barbara Streisand
풀어 주다: 2024-11-04 15:24:02
원래의
280명이 탐색했습니다.

How to Determine the Request URL Scheme in Go?

Go에서 요청 URL의 스키마 찾기

Ruby/Rack에서 현재 요청 URL의 스키마를 검색하는 것은 다음을 사용하여 간단합니다. 계획#요청 방법. 그러나 Go에서는 http.Request.URL.Scheme이 빈 문자열을 생성합니다.

문제 이해

빈 문자열 뒤에 있는 이유는 Go가 두 가지 모두를 지원하기 때문입니다. 기본적으로 HTTP 및 HTTPS입니다. http.ListenAndServe()만 사용하면 HTTP만 제공하게 됩니다. 반대로, http.ListenAndServeTLS()만 사용하면 HTTPS로 제한됩니다.

해결 방법: TLS 연결 상태 사용

이 문제를 해결하려면 http의 TLS 속성을 활용하세요. 요구. 이 속성은 요청에 사용된 모든 TLS에 대한 정보를 공개하는 *tls.ConnectionState를 제공합니다. TLS 속성을 확인하면 클라이언트가 사용하는 구성표를 확인할 수 있습니다.

<code class="go">func handler(w http.ResponseWriter, r *http.Request) {
    if r.TLS == nil {
        fmt.Fprintf(w, "HTTP")
    } else {
        fmt.Fprintf(w, "HTTPS")
    }
}</code>
로그인 후 복사

업데이트된 주요 기능

또한 다음을 사용하여 HTTP 및 HTTPS 프로토콜을 모두 제공합니다. 두 가지 듣기 기능:

<code class="go">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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿