我不确定这是一个错误还是http响应包应该如何工作.
在此示例中,Content-Type不会设置响应标头
// Return the response
w.WriteHeader(http.StatusCreated)
w.Header().Set("Content-Type", "application/json")
w.Write(js)
Run Code Online (Sandbox Code Playgroud)
但是,如果我按顺序设置标题的顺序,它确实有效:
// Return the response
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(http.StatusCreated)
w.Write(js)
Run Code Online (Sandbox Code Playgroud)
现在这将实际设置标头application/json.这种行为是有意的吗?
dmp*_*lla 16
标题只能写入响应一次,因此您必须在写入之前设置所有标题.写入标题后,它们将被发送到客户端.
只有w.WriteHeader(http.StatusCreated)在设置好所有标题后才能调用.
请阅读GOLANG规范,了解WriteHeader的工作原理
一旦写入正文,该规则对于正文是相同的(写入响应实际上是将其发送给客户端)它不能重新发送或更改.