对shouldRedirectRLocked方法(go1.11 src / net / http / server.go:2259)感到困惑

时间:2018-08-26 08:02:31

标签: http go

我正在阅读有关http模块的源代码,以下代码使我感到困惑:

func (mux *ServeMux) shouldRedirectRLocked(host, path string) bool {
    p := []string{path, host + path}

    for _, c := range p {
        if _, exist := mux.m[c]; exist {
            return false
        }
    }

    n := len(path)
    if n == 0 {
        return false
    }
    for _, c := range p {
        if _, exist := mux.m[c+"/"]; exist {
            return path[n-1] != '/' <<- why not return true directly
        }
    }

    return false
}

作为此方法上方的注释: shouldRedirectRLocked报告是否应将给定的路径和主机重定向到path +“ /”。如果为路径+“ /”而不是路径注册了处理程序,则应该发生这种情况-请参见ServeMux上的注释。

c +“ /” 已注册,而 c 未注册,所以我认为它应该直接返回true,但是为什么我们必须检查 path [ n-1]!='/'?这是有关http协议的问题吗?

0 个答案:

没有答案