github.com/insionng/yougam@v0.0.0-20170714101924-2bc18d833463/libraries/igm/sockjs-go.v2/sockjs/iframe.gon-place (about)

     1  package sockjs
     2  
     3  import (
     4  	"crypto/md5"
     5  	"fmt"
     6  	"net/http"
     7  	"text/template"
     8  )
     9  
    10  var tmpl = template.Must(template.New("iframe").Parse(iframeBody))
    11  
    12  func (h *handler) iframe(rw http.ResponseWriter, req *http.Request) {
    13  	etagReq := req.Header.Get("If-None-Match")
    14  	hash := md5.New()
    15  	hash.Write([]byte(iframeBody))
    16  	etag := fmt.Sprintf("%x", hash.Sum(nil))
    17  	if etag == etagReq {
    18  		rw.WriteHeader(http.StatusNotModified)
    19  		return
    20  	}
    21  
    22  	rw.Header().Set("Content-Type", "text/html; charset=UTF-8")
    23  	rw.Header().Add("ETag", etag)
    24  	tmpl.Execute(rw, h.options.SockJSURL)
    25  }
    26  
    27  var iframeBody = `<!DOCTYPE html>
    28  <html>
    29  <head>
    30    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    31    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    32    <script>
    33      document.domain = document.domain;
    34      _sockjs_onload = function(){SockJS.bootstrap_iframe();};
    35    </script>
    36    <script src="{{.}}"></script>
    37  </head>
    38  <body>
    39    <h2>Don't panic!</h2>
    40    <p>This is a SockJS hidden iframe. It's used for cross domain magic.</p>
    41  </body>
    42  </html>`