簡體   English   中英

瀏覽器向自己的服務器發送空請求

[英]Browser sending Empty Request to own Server

我最近一直在 Java 中編寫自己的 Web 服務器,因為我認為擁有一個服務器很整潔,昨天我偶然發現了一個我仍然沒有解決的問題。 我的瀏覽器(未使用谷歌搜索的 Chromium)似乎向服務器發送了一些空請求或類似的東西。 我已經實現了一個請求處理程序,它應該讀取 GET 請求並提取請求的資源。 它的工作原理是這樣的:它接受請求,例如:“GET /index.html HTTP/1.1”並將其放入帶有 String.split(" "); 的數組中。 方法然后數組看起來像這樣: ["GET", "/index.html", "HTTP/1.1"] 然后我將數組的第二個值,在本例中為“/index.html”存儲在一個變量中,我然后可以用來定位請求的文件並將其提供給用戶。 出於調試目的,我還打印出用戶發送的完整請求,如下所示

GET, /index.html, HTTP/1.1 Host:, localhost:8080 Connection:, keep-alive Cache-Control:, max-age=0 Upgrade-Insecure-Requests:, 1 DNT:, 1 User-Agent:, Mozilla /5.0, (X11;, Linux, x86_64), AppleWebKit/537.36, (KHTML,, like, Gecko), Chrome/86.0.4240.111, Safari/537.36 Accept:, text/html,application/xhtml+xml,application/xml ;q=0.9,image/avif,image/webp,image/apng, / ;q=0.8,application/signed-exchange;v=b3;q=0.9 Sec-Fetch-Site:, 同源 Sec-Fetch- Mode:, 導航 Sec-Fetch-Dest:, 文檔Referer:, http://localhost:8080/index.html Accept-Encoding:, gzip, deflate,, br Accept-Language:, en-US,en;q =0.9

但是,有時請求只是空的,它打印出來的正是這個: [] 然后它顯然會拋出一個 ArrayIndexOutOfBoundsException 。 這很煩人,因為它與 Linux“curl”命令(curl localhost:8080/index.html)完美配合我已經嘗試通過使用wireshark 並尋找一些奇怪的東西來解決這個問題,但我沒有嘗試修復這個問題很糟糕。 我希望我能為任何人提供足夠的信息來幫助我解決我的問題,我已經嘗試解決這個問題 2 天了,如果有人幫助我,我將非常感激。 謝謝

抱歉,文本格式不佳,這是我的第一個 stackoverflow 問題

if (!request.trim().isEmpty())
{
   String[] requestArray= request.split(" ");
   if (requestArray.length > 1)
   {  
      //your logic as usual
   }
   else
   {
       log.error("The request has an incorrect format: "+request);
       //...
   }
}
/*else
{
   log.error("The request is empty");
   //...
}  uncomment this only if needed, as you could get spammed by empty requests */ 

首先驗證request字符串。 如果為空,則避免處理,無需拆分。 修剪將刪除前導/尾隨空格。

然后驗證 split() 方法的結果,並將您的邏輯放在該塊中。 如果條件不成立,請避免處理它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM