服务器无法解析ajax的post参数中的某些内容,这是什么原因导致的?

6 浏览
0 Comments

服务器无法解析ajax的post参数中的某些内容,这是什么原因导致的?

我正在进行一个ajax的post请求,在客户端可以看到值在头部传递。

然而在服务器端接收到的值是空的?当服务器尝试解析时,似乎对值有些问题。因为如果我使用encodeURIComponent,它可以正常工作。是什么导致了这种行为?


Servlet:

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    String body = request.getParameter("body");
    System.out.println(body); //如果正常传递为空 :(
}

我直接从头部复制了formdata的内容(所以有些东西服务器显然不喜欢):

pastebin - 未解析的formdata

pastebin - 已解析的formdata

相关请求头:

Content-Length: 64488

Content-Type: application/x-www-form-urlencoded; charset=UTF-8

有什么想法吗?谢谢。

0
0 Comments

问题是由于字符串过长导致的。显然,Eclipse中的控制台有一个字符限制。这就是为什么我看到一个空值。这里的问题帮助解决了这个问题:Character limit for System.out.println() in Java

解决方法是:

  1. 转到Window > Preferences > Run/Debug > Console
  2. 取消选中"Limit Console Output"(或者您可以增加控制台缓冲区大小)
0
0 Comments

这个问题的出现可能是由于Web服务器设置中的一些安全规则引起的。

你可以在Java中使用以下代码解码数据:

String res= java.net.URLDecoder.decode(body, "UTF-8");

是的,我知道如何解码已编码的字符串,但我想知道为什么会出现这种情况。为什么我不能像其他字符串一样直接传递它而不进行编码呢?

0