我不明白为什么我们使用劫持,因为我可以直接在响应正文中写入一些内容,有人可以解释一下吗?
func writeSome(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "write some thing")
}
与此相同:
func hijack(w http.ResponseWriter, r *http.Request) {
hj, _ := w.(http.Hijacker)
_, buf, _ := hj.Hijack()
buf.WriteString("write some thing")
buf.Flush()
}
我很困惑
当您不想使用内置服务器的 HTTP 协议实现时,请使用 Hijack。这可能是因为您想要切换协议(例如,切换到 WebSocket)或者内置服务器妨碍您。
上面的两个代码片段不会在线上创建相同的输出。第一个片段的输出将包含响应标头:
HTTP/1.1 200 OK
Date: Wed, 26 Nov 2014 03:37:57 GMT
Content-Length: 16
Content-Type: text/plain; charset=utf-8
write some thing
第二个片段绕过内置服务器代码并写入
write some thing
直接输出。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)