我最近一直在用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问题
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
我想向一个包含参与者的服务器发出一个异步请求。假设我有两个演员: 和 我的问题是: 1) getSessionIdFromServer()向服务器发出同步请求。我认为异步请求会好得多,对吗?所以它将返回Future[String]而不是一个普通的字符串。 2)我如何使异步:通过使用AsyncHttpClient(如果我没记错的话)或将其同步体包装到Future { } 中? 3)我应该使用阻塞{}