2013-03-26 140 views
4

我的服務器發送與身體樣品響應頭的請求:C中的簡單HTTP服務器 - 如何響應瀏覽器?

static char* not_found_response_template = 
     "HTTP/1.1 404 Not Found\n" 
     "Content-type: text/html\n" 
     "\n" 
     "<html>\n" 
     " <body>\n" 
     " <h1>Not Found</h1>\n" 
     " <p>The requested URL was not found on this server.</p>\n" 
     " </body>\n" 
     "</html>\n"; 


    len = strlen(not_found_response_template); 
    send(newSct, not_found_response_template, len, 0); 

其被正確地發送它但Firefox不斷加載,直到我取消傳送。

的Firefox插件HttpRequestHelper表明這一點:

GET本地主機:6666

- 反應 - 404未找到 的Content-Type:text/html的

爲什麼內容不加載?

+0

對於http標題,使用\ r \ n行結束符。這可能不是這樣,但我沒有看到其他任何錯誤,並且標準要求用於協議流量的CRLF終止符 – jthill 2013-03-26 23:05:21

回答

2

發送響應後嘗試刷新和/或關閉套接字。

+0

close(newSct);做到了!謝謝:) – XHotSniperX 2013-03-26 23:21:52

+0

@XHotSniperX在調用close之前在套接字上執行關閉 – 2013-03-27 00:11:40

5

HTTP要求以CR + LF結束行,因此請嘗試\r\n

+0

我試過但沒有成功 – XHotSniperX 2013-03-26 23:21:25

+4

@XHotSniperX這並不意味着您應該濫用這些標準。 – 2013-03-27 00:12:06

相關問題