package sockjs import ( "crypto/md5" "fmt" "net/http" "text/template" ) var tmpl = template.Must(template.New("iframe").Parse(iframeBody)) func (h *Handler) iframe(rw http.ResponseWriter, req *http.Request) { etagReq := req.Header.Get("If-None-Match") hash := md5.New() if _, err := hash.Write([]byte(iframeBody)); err!=nil { http.Error(rw, err.Error(), http.StatusInternalServerError) return } etag := fmt.Sprintf("%x", hash.Sum(nil)) if etag == etagReq { rw.WriteHeader(http.StatusNotModified) return } rw.Header().Set("Content-Type", "text/html; charset=UTF-8") rw.Header().Add("ETag", etag) if err := tmpl.Execute(rw, h.options.SockJSURL); err!=nil { http.Error(rw, "could not render iframe content: "+err.Error(), http.StatusInternalServerError) return } } var iframeBody = `
This is a SockJS hidden iframe. It's used for cross domain magic.
`