提问人:Rodrigo 提问时间:9/10/2016 更新时间:9/10/2016 访问量:4363
Golang HTTP 响应标头被删除
golang http response headers being removed
问:
我不确定这是否是一个错误,或者 http 响应包应该如何工作。
在此示例中,不会设置响应标头Content-Type
// Return the response
w.WriteHeader(http.StatusCreated)
w.Header().Set("Content-Type", "application/json")
w.Write(js)
如果我翻转标题设置方式的顺序,它确实有效:
// Return the response
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(http.StatusCreated)
w.Write(js)
现在,这将实际将标头设置为 .这种行为是有意为之吗?application/json
答:
18赞
dmportella
9/10/2016
#1
标头只能写入响应一次,因此在写入标头之前必须设置所有标头。一旦标头被写入,它们就会被发送到客户端。
只有在设置了所有标头后,才应调用。w.WriteHeader(http.StatusCreated)
阅读 GOLANG 规范 WriteHeader 的工作原理
此规则对于正文是相同的,一旦正文被写入(写入响应实际上是将其发送给客户端),它就不能被重新发送或更改。
评论