HttpServerRequest:请求被处理多次

时间:2017-05-10 18:33:09

标签: java httprequest vert.x

我写了以下代码:

if(arg(0) == 'taxonomy' && arg(1) == 'term' && is_numeric(arg(2))){
  $term_id = arg(2); // Your Term Id
  // if you fetch more data then load the taxonomy
  $term_obj = taxonomy_term_load($term_id);
  print "<pre>";
  print_r($term_obj);
  print "</pre>";
}

奇怪的是,一旦我收到路径&#34; / healthcheck&#34;的GET请求,我就进入控制台:

  

  

无法处理此请求

我希望只获得&#34; OK&#34;,然后该方法必须返回。 你知道如何实现它吗?

3 个答案:

答案 0 :(得分:2)

您可能会收到多个请求,其中一个请求不是get请求。您可以通过插入日志语句

来监控服务器

答案 1 :(得分:1)

我终于发现我的浏览器确实发送了两个请求。 第一个请求是GET localhost:8080 / healthcheck,第二个请求是GET localhost:8080 / favicon。

GET localhost:8080 / favicon不满足条件,代码打印&#34;此请求无法处理&#34;。

答案 2 :(得分:0)

您正在尝试处理预检请求。

根据MDN

  

与简单请求不同的预检请求(如上所述),   “preflighted”请求首先发送HTTP OPTIONS请求标头   其他域上的资源,以确定是否   实际请求可以安全发送。跨站点请求是预先检定的   像这样,因为它们可能会影响用户数据

试试这个

public static void handleRequest(HttpServerRequest request, Vertx vertx) throws FileNotFoundException {
        if(request.method() == HttpMethod.OPTIONS) {
            return;
        } 

        if (request.method() == HttpMethod.GET) {
            if (request.path().equals("/healthcheck")) {
                returnResponse(request, "I'm alive!!!\n", true);
                System.out.println("OK");
                return;
            }
            ...

        }
        returnResponse(request, "Not Valid Request", false);
        System.out.println("This request cannot be handled");
    }