我有一個使用套接字獲取所有客戶端數據並發回數據的 http 服務器。我能夠成功地將 HTML 發送回客戶端(我的 Web 瀏覽器),但是每當我嘗試發送圖像時,無論我發送什麼圖像,我都會得到一個小的白色方塊。
編碼:
#Generate and send response
def response(client, response = 200, headers, data)
client.print "HTTP/1.1 #{response.to_s}\r\n"
headers_s = ""
for h in headers do
headers_s = headers_s + h + "\n"
end
client.print "#{headers_s}\r\n"
client.print "\r\n"
client.print data.to_s
end
response(client, 200, ["Content-Type: image/png"], File.read("./very_cool_picture.png"))
我可能讀錯了圖像,但我不確定。此外,即使使用正確的標頭,發送回其他二進制數據(例如可執行文件)也無法正常工作。
還有更多我沒有展示的代碼,因為它接受客戶端、解析請求等過多且無關緊要。
\r\n
標題和數據之間有額外的內容。在每個標題之後添加一個\n
(應該真的是 a \r\n
),然後在打印它們時添加另一個(client.print "#{headers_s}\r\n"
),然後最後寫出另一個。這額外的兩個字節導致瀏覽器看到無效的 PNG 數據。
刪除該行client.print "\r\n"
應該可以解決您的問題。
(您可能還應該發送一個 Content-Length 標頭,儘管沒有它仍然可以工作。)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句