2015-10-05 58 views
1

我目前正在一個額外的輕量級的Web服務器下的人誰試圖破解我的服務器,但我想知道正確的編碼,以用於輸出。格式化原始的HTML輸出的所有客戶端

我做一個簡單的測試頁面,只以粗體顯示「錯誤」和「這是一個黑客-ED-服務器」爲主要內容。

我試圖用最小的HTTP頭,因此頁面可以顯示更好。

目前Opera瀏覽器下方正確處理HTML,但是,當我使用沒有任何參數沒有出現在屏幕上的捲曲測試。我反而期望HTML代碼出現。

當我使用捲曲-I參數,預期的HTTP頭正確顯示。

char buf[10000]={"HTTP/1.1 200 OK\r\nContent-type: text/html\r\n\r\n<html><head><title>hacked</title></head><body><H1>Error</h1><p>This is a hack-ed-server</p></body></html>\n"}; 

在所有試驗中,我使用的相同的正確的IP地址和正確的端口號和包含上述代碼不斷運行的服務器守護進程。

我很好奇。 CURL,Opera或者我的代碼有問題嗎?我是否正確地爲HTTP頭格式化返回代碼?

+0

這很奇怪。我將'HTTP/1.1'改爲'HTTP/1.0',並用CURL對其進行測試,並顯示HTML輸出。然後我開始用apache bench進行測試,並得到了「通過peer重置的連接」。我不知道這是爲什麼? – Mike

回答

0

...我然後繼續與Apache替補測試,並得到

你可能沒有完全讀取來自客戶端的請求,而只是傾倒你的迴應「通過對等連接復位」客戶端並關閉連接。另請參閱Perl: Connection reset with simple HTTP server

除此之外,您所提供的代碼的單行不足以回答你的問題,因爲它是相關的,你從客戶端讀什麼,你送什麼,當你關閉TCP套接字。本身的反應很好,但你最好添加一個內容長度。