我不明白我们为什么要使用劫持,因为我可以直接在响应正文中写一些东西,有人可以解释一下吗?
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 协议(protocol)实现时,请使用 Hijack。这可能是因为您想切换协议(protocol)(例如切换到 WebSocket)或内置服务器妨碍了您。
上面的两个代码片段不会在网络上创建相同的输出。第一个片段的输出将包含一个响应 header :
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
直接输出。
关于go - 什么时候在 golang 中使用劫持?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27075478/