当前位置: 首页 > 知识库问答 >
问题:

浏览器向自己的服务器发送空请求

汤枫
2023-03-14

我最近一直在用Java编写自己的Webserver,因为我觉得有一个很不错,昨天我偶然发现了一个问题,我仍然没有解决。我的浏览器(取消搜索Chromium)似乎向服务器发送了一些空请求或类似的东西。我实现了一个请求处理程序,它应该读取GET请求并提取请求的资源。它的工作原理是这样的:它以请求为例:“GET/index.htmlHTTP/1.1”并将其放入带有String.split (" "); 方法的Array中,Array如下所示:[“GET”、“/index.html”、“HTTP/1.1”]然后我将数组的第二个值存储在一个变量中,在本例中为“/index.html”,然后我可以使用该变量来定位请求的文件并将其提供给用户。出于调试目的,我还打印出用户发送的完整请求,如下所示

获取,/索引。html,HTTP/1.1主机:,本地主机:8080连接:,保持活动缓存控制:,最大年龄=0升级不安全请求:,1 DNT:,1用户代理:,Mozilla/5.0,(X11;,Linux,x86\u 64),AppleWebKit/537.36,(KHTML,like,Gecko),Chrome/86.0.4240.111,Safari/537.36接受:,文本/html,应用程序/xhtml,应用程序/xml;q=0.9,图像/avif,图像/webp,图像/apng,/;q=0.8,申请/签名交换;v=b3;q=0.9秒提取站点:,同源秒提取模式:,导航秒提取目的地:,文档引用者:,http://localhost:8080/index.html接受编码:、gzip、、deflate、、br接受语言:、en US、en;q=0.9

然而,有时请求只是空的,它会打印出以下内容:[]然后抛出ArrayIndexOutOfBoundsException。这很烦人,因为它与Linux的“curl”命令(curl localhost:8080/index.html)配合得非常好。我已经尝试使用wireshark并寻找一些奇怪的东西来解决这个问题,但我修复这个问题的尝试都没有成功。我希望我能为任何人提供足够的信息来帮助我解决这个问题,我已经努力解决这个问题两天了,如果有人帮助我,我将不胜感激。谢谢

抱歉,文本格式不好,这是我的第一个stackoverflow问题

共有1个答案

督阿苏
2023-03-14
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 */ 

首先验证请求字符串。如果它为空,请避免处理它,无需拆分。修剪将删除前导/尾随空格。

然后验证split()方法的结果,并将逻辑放在该块中。如果条件不正确,请避免处理它。

 类似资料:
  • XMLHttpRequest 对象用于和服务器交换数据。 向服务器发送请求 如需将请求发送到服务器,我们使用 XMLHttpRequest 对象的 open() 和 send() 方法:xmlhttp.open("GET","ajax_info.txt",true); xmlhttp.send(); 方法 描述 open(method,url,async) 规定请求的类型、URL 以及是否异步处理

  • 我正在开发一个基于云的后端HTTP服务,该服务将公开用于与一些on-prem系统的集成。客户机系统是由外部供应商定制的,它们是带有自己数据库的后端系统。这些系统部署在我们客户的公司中,我们无法访问它们,也无法控制它们。我们向供应商提供我们的API规范,他们实现客户机代码。 我的服务与客户交换的数据格式基于XML,并遵循一定的标准。供应商用不同的编程语言实现他们的客户机系统,随着时间的推移,新的供应

  • 我已经试过填充add。html,当我单击send时,我得到上面的错误。错误的请求浏览器(或代理)发送了此服务器无法理解的请求。我的应用程序。py如下所示。 当我在填写表单后尝试提交时,会出现以下错误: 错误的请求浏览器(或代理)发送了此服务器无法理解的请求。 我已经试着把它输出到一个文件中,但仍然得到了错误

  • 我建立了两台服务器:第一台用于前端(localhost:7200),第二台用于后端(localhost:7300)。相应地,在路由“/test”上,前端到后端发出了一个测试请求。 问题在于,当我发送一个json对象(单击“btn”按钮时)时,它会拒绝,并显示以下消息: CORS策略阻止从http://localhost:7300/testhttp://localhost:7200访问XMLHttp

  • 尽管 ASP 主要用来创建和处理服务器端脚本,还是可以使用它生成由客户浏览器处理的客户端脚本来扩展其效用。通过组合传送到浏览器的脚本命令可以编写服务器端脚本。 通过组合由 HTML 注释括起来的客户端脚本和由定界符括起来的服务器端脚本可以做到这一点: <SCRIPT LANGUAGE="VBScript"> <!-- client script <% server script %> cli