我正在創建一個低級 HTTP 服務器,我想驗證我的回應是否正確。
其中一些很好,但另一些失敗。我已經將一些回應保存為位元組并在 HxD 中查看它們,它們看起來是正確的,但它們顯然不是以某種方式。
這是一個十六進制格式的 HTTP 回應的開始:
48 54 54 50 2F 31 2E 31 20 32 30 20 20 4F 4B 0A 43 4F 4E 54 45 4E 54 2D 54 2D 54 59 59 50 45 3A 20 69 69 61 61 61 67 67 65 2F 70 6E 67 67 0D 0D 0D 0A 0A 41 41 41 54 2D 4D 4D 4D 4D 4D 4D 4D 4D 4D 4D 4D 4F 44F 44F 44F 44F 44F 44F 44F 44F 44F 44F 44F 44F 44D 49 46 49 45 44 3A 20 53 75 6E 2C 20 30 31 20 4D 61 79 20 32 30 32 32 20 32 32 3A 32 34 3A 32 34 20 47 4D 54 0D 0A 41 43 43 45 50 54 2D 52 41 4E 47 45 53 3A 20 62 79 74 65 73 0D 0A 45 54 41 47 3A 20 22 37 37 37 37 35 35 35 33 36 61 61 35 61 35 64 64 38 38 31 3A 31 3A 30 22 0A 53 45 53 45 52 56 45 52 56 45 52 3A 20 4D 20 4D 69 69 69 69 63 63 72 6F 73F 73F 73F 73F 73F 73F 73F 73F 73F 73F 73F 73F 73F 73F 73F 73F 73F 73F 73F 73F 73F 73F 73F 73F 73F 73F 73F 73F 73F 73F 73F 73F 73 f 73 3 a 6F 66 74 2D 49 49 53 2F 31 30 2E 30 0D 0A 58 2D 50 4F 57 45 52 45 44 2D 42 42 59 3A 20 41 53 53 50 2E 4E 45 54 0D 0A 44 44 44 41 41 54 41 54 45 3A 20 57 65 65 64 2C 20 30 34 34 2 C 20 57 64 2C 20 30 34 34 34 e 20 4d 61 79 20 32 30 32 32 20 30 33 30 30 31 3a 34 34 38 20 47 4d 54 0d 54 0a 43 4f 4e 54 45 4e 54 45 4e 54 2d 4c 45 45 45 47 54 48 3A 20 39 39 39 39 37 37 37 37 37 37 37 37 0D 0A 43 6F 6E 43 6F 6E 43 6F 6E 43 6F 6E 43 6F 6E 43 6F 6E 43 6F 6E 43 6F 6E 43 37 37 37 37 0A 43 6F 6E。 6E 65 63 74 69 6F 6E 3A 20 63 6C 6F 73 65 0D 0A 0D 0A 0D 0A 89 50 4E 47
如何根據RFC 2616驗證我創建的回應是否有效?
我在 .NET 中作業,但我不介意它是在線工具還是不同的平臺。
編輯:
我已經用這個特定的例子解決了我的問題(頭部和身體之間有 3 個 crlfs 而不是 2 個),但我仍然想知道如何自動驗證這些請求。
uj5u.com熱心網友回復:
我最終通過這個 nuget 包和以下代碼實作了這一點:
if (System.Diagnostics.Debugger.IsAttached)
{
using (var handler = new HttpParserDelegate())
using (var parser = new HttpCombinedParser(handler))
{
parser.Execute(arr);
}
if (!handler.HttpRequestResponse.IsEndOfMessage)
{
System.Diagnostics.Debugger.Break();
throw new InvalidOperationException($"An HTTP response was serialized but it is not a valid response");
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/471497.html
標籤:http
