【问题标题】:Spark POST returns 404 not found seemingly-arbitrarilySpark POST 看似随意地返回 404 not found
【发布时间】:2018-03-04 08:42:13
【问题描述】:

Spark 最近表现得很奇怪。我有一个按钮,单击该按钮会调用带有一些查询参数的 POST 方法:

post("/test", (request, response) -> {

    model.put("reason", "some reason here");
    ...

    LOG.info("Returning from /test with reason: " + model.get("reason")); 
    // the above line always executes and always prints the correct output (never 404)

    return new ModelAndView(model, "test.vtl");
}, new VelocityTemplateEngine());

文件test.vtl 仅包含以下内容:$reason (在下面的 JS 代码中使用它来显示带有 model 映射中 reason 键内容的警报)。

JS相关代码:

xmlHttp.open("POST", "/test", true);
xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");

var params = "file=" + file + "&searchStr=" + searchStr;

xmlHttp.onreadystatechange = function() {
    if (xmlHttp.readyState == XMLHttpRequest.DONE) {
        alert(xmlHttp.responseText);
    }
}
xmlHttp.send(params);

当我单击它时,有时它可以正常工作,当我再次单击时,我得到一个 404 Not Found :

MatcherFilter:152 - 请求的路由 [/test] 尚未在 Spark 中映射

这会在几秒钟内发生。我点击 - 它有效 - 如果失败,我再次点击 - 再次失败 - 再次失败 - 再次突然成功......

怎么可能?

附:我已经在 post 请求中登录,所以我知道 Spark 实际上正在访问它。但它并没有从中返回。这是否可能与代码 inside post 突然引发 404 (虽然我没有从它访问其他页面)。

【问题讨论】:

    标签: javascript java post http-status-code-404


    【解决方案1】:

    对此似乎有 2 个可能的答案(为什么他们解决的是另一个问题):

    1. 添加Thread.sleep(250); // or even lower
    2. 将请求更改为GET

    我找不到这些任意失败的根本原因,但最终选择了选项 #2。

    【讨论】:

      猜你喜欢
      • 2023-03-05
      • 2016-03-16
      • 2015-06-09
      • 1970-01-01
      • 2021-06-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多