Go中有多个response.WriteHeader调用

时间:2014-11-16 20:34:17

标签: go

我的Go服务器处理请求我首先调用response.WriteHeader()以设置我的响应的状态代码。之后,我开始将字节写入响应主体。如果浏览器在我复制字节时取消请求,则会收到错误:

write tcp [::1]:52319: broken pipe

我的代码检测到此错误,然后调用http.Error()。这会再次调用response.WriteHeader()

这似乎是一个问题,但我不确定。这可以避免吗?在写入响应正文时发生错误时,如何避免再次调用response.WriteHeader()

谢谢!

1 个答案:

答案 0 :(得分:3)

.WriteHeader()的调用开始通过网络向客户端发送响应。一旦响应即将到来,就无法回复。您唯一能做的就是在本地记录错误(让服务器管理员知道)或者可能只是默默地失败。

'Error()'函数用于发送完整的HTTP(错误)响应,因此您只能使用它来替换发送您自己的响应,而不是除此之外。