package helper import ( "net/http" "strings" ) /** * 取访问主机名 */ func GetHost(req *http.Request) string { var hostlist []string = req.Header.Values("X-Forwarded-Host") var host string if len(hostlist) > 1 { host = hostlist[len(hostlist)-1] //取最后一次转发的 } else if len(hostlist) == 1 { host = hostlist[0] } else { host = "" } if host != "" { hosts := strings.Split(host, ",") host = strings.Trim(hosts[len(hosts)-1], " ") } if host == "" { host = req.Host } return host } /** * 取域名 */ func GetDomain(req *http.Request) string { scheme := "http://" if req.TLS != nil { scheme = "https://" } if strings.Contains(req.Referer(), "https://") { scheme = "https://" } var host string = GetHost(req) hosts := strings.Split(host, ":") host = hosts[0] if len(hosts) > 1 && hosts[1] == "443" { scheme = "https://" } var w strings.Builder w.WriteString(scheme) w.WriteString(host) return w.String() } func SetHeader(w http.ResponseWriter, resp *http.Request) { w.Header().Set("Access-Control-Allow-Origin", "*") //允许访问所有域 w.Header().Add("Access-Control-Allow-Headers", "Content-Type,x-csrf-token,x-requested-with,token") //header的类型 w.Header().Set("Access-Control-Allow-Methods", "POST,GET,OPTIONS") w.Header().Set("content-type", "application/json") //返回数据格式是json // w.Header().Set("Content-Length", resp.Header.Get("Content-Length")) }