我正在使用某种IoT设备。最终,我有一个简单的httpd服务器可以工作,并且简单的html页面就像一个超级按钮一样工作,但是浏览器无法识别图像。我认为这是http标头问题,但我不知道到底是什么错误。
例如,我的测试页如下:
<html>
<head><title>test page</title></head>
<body>
hello world!
<img src="img.png">
</body>
</html>
如果我去http://de.vi.ce.ip/,将产生2个要求:
GET / HTTP/1.1\r\n
Accept text/html, application/xhtml+xml, */*\r\n
Accept-Language: en-EN\r\n
...
GET /img.png HTTP/1.1\r\n
Accept image/png, image/svg+xml, image/*;q=0.8, */*;q=0.5\r\n
Accept-Language: en-EN\r\n
...
要让我的服务器回复:
HTTP/1.0 200 OK\r\n
Content-Type: text/html\r\n
Content-Length: 131\r\n
\r\n
<page data>
HTTP/1.0 200 OK\r\n
Content-Type: image/png\r\n
Content-Length: 5627\r\n
\r\n
<image binary data>
结果是我可以看到文本,但是图像坏了。
我尝试了更多的参数,例如Connection: close, Accept-Ranges: bytes, Content-Location (path)
。
我在Content-Type: image/jpeg
下尝试了jpeg图像,但没有运气。我确定图片发送正确。
答案 0 :(得分:0)
请求正在请求$arr = array_merge($arr, daysinyears($d1, date_create(date('d-m-Y',strtotime('31-12-'.$year_prec)))));
png
为什么不返回正确的内容类型;
GET /img.png HTTP/1.1\r\n
答案 1 :(得分:0)
我做的完全一样-用于物联网的原始http服务器,您的回答看起来绝对正确。尝试检查以下内容:
在关闭插座之前,请先正确冲洗它。如果您在send()之后立即调用close()
,则可能会遇到此问题-数据未正确写入
内容长度应该恰好是文件的大小。确保您没有计算http响应的\ r \ n个字节。浏览器可能仍在等待尾部字节
最后,获取浏览器网络日志:)