如何在运行 AppEngine 的 Go 服务器生成的响应中设置 HTTP 标头?

The*_*hat 1 google-app-engine go

我正在尝试使用 golang 和 google app engine 设置标头。下面是简单代码的样子:

w.Header().Set("Content-Type", "application/xml")
w.Header().Set("Access-Control-Allow-Origin", "*")
    w.Header().Set("header-name", "value")
Run Code Online (Sandbox Code Playgroud)

它似乎无法在我的开发服务器上运行。我总是得到通常的标题和

content-type:text/plain; charset=utf-8
Run Code Online (Sandbox Code Playgroud)

当我部署时我得到

Content-Type:text/html; charset=utf-8
Run Code Online (Sandbox Code Playgroud)

我做错了吗还是这是一个错误(另一个)?

The*_*hat 5

问题似乎是我在自定义标头之前设置了 http 代码。请注意,如果您w.WriteHeader(200)之前有w.Header,则不会设置标头。

  • `// Write 将数据写入连接作为 HTTP 回复的一部分。如果尚未调用 WriteHeader,则 Write 在写入数据之前调用 WriteHeader(http.StatusOK)。如果标头不包含 Content-Type 行,Write 会将 Content-Type 集添加到将写入数据的初始 512 字节传递给 DetectContentType 的结果中。 (3认同)