1 回答
TA贡献1830条经验 获得超3个赞
只是在这里添加一些信息.. 那不是您正在编写的简单服务器。您正在尝试编写一个没有net/http包的 HTTP 服务器。这是不平凡的。也许你想要一个回声服务器?
您的浏览器需要格式正确的 HTTP 响应。这意味着您不能只是向连接写入一个随机字符串并期望它知道如何处理它。这是HTTP 协议描述的维基百科(我不打算在 SO 答案中描述整个协议)。
如果你只想要一个应该有效的简单答案:
HTTP/1.1 200 OK
Content-Type: text/plain; charset=UTF-8;
Content-Length: LENGTH OF BODY HERE
BODY
请注意,标头由 分隔,\r\n最后一个标头后跟两个:\r\n\r\n。
所以这:
conn.Write([]byte("HTTP/1.1 200 OK\r\n"))
conn.Write([]byte("Content-Type: text/plain; charset=UTF-8\r\n"))
newmessage := "Hello World!"
conn.Write([]byte("Content-Length: " + strconv.Itoa(len(newmessage)) + "\r\n\r\n"))
conn.Write([]byte(newmessage + "\n"))
另外,我想因为这是一个协议问题,我还可以让您知道典型的 HTTP 端口是 80,而替代/测试端口是 8080。我猜只是为您的知识添加了一些约定。
- 1 回答
- 0 关注
- 153 浏览
添加回答
举报