我制作了一个 TCP 服务器,它响应“Hello world!”对于每个请求,当我在 Chrome 上访问 127.0.0.1:1999 时,它显示“Hello world!”,但在 Safari (OSX Capitan) 上同样显示“Safari 无法打开页面,因为服务器意外断开了连接” ”
当我尝试 C 服务器示例时 here ,我看到同样的问题:它适用于 Chrome,但不适用于 Safari。然而,执行相同操作的 node.js 示例适用于两者。给出了什么?
使用 C TCP 服务器可以做什么来让 Safari 满意?我更关心的是确保我没有做错什么,而不是支持每个浏览器。
最佳答案
对于您引用的 C 代码示例,我怀疑您在响应中需要一个 Content-Length
header 。
如果我没数的话,是 240 个字符。
char response[] = "HTTP/1.1 200 OK\r\n"
"Content-Type: text/html; charset=UTF-8\r\n\r\n"
"Content-Length: 240"
"<!DOCTYPE html><html><head><title>Bye-bye baby bye-bye</title>"
"<style>body { background-color: #111 }"
"h1 { font-size:4cm; text-align: center; color: black;"
" text-shadow: 0 0 2mm red}</style></head>"
"<body><h1>Goodbye, world!</h1></body></html>\r\n";
该页面上针对其他语言的一些其他实现完全是错误的并且无法正确发送回 HTTP 1.1。
如果您分享您的代码,我可以给出更好的答案。
关于c - Safari 无法与我的 TCP 服务器配合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34113551/