vertx Session不会在我的浏览器中创建cookie

时间:2016-12-30 03:25:52

标签: javascript java browser vert.x

我的vertx服务器是用Java编写的,当我想用​​Js创建一个Session时,我的浏览器没有带密钥的cookie。但是当我直接使用URL创建会话时,我的浏览器有一个cookie。 我的服务器:

    router.route().handler(CookieHandler.create());
    router.route().handler(SessionHandler.create(LocalSessionStore.create(vertx));
    router.get("/log/:name/:password").handler(this::verifId);

public void verifId(RoutingContext routingContext) {
        HttpServerRequest request = routingContext.request();
        HttpServerResponse response = routingContext.response();
        try {
            Session s = routingContext.session();
            DataBase.connect();
            String name = request.getParam("name");
            String password = request.getParam("password");
            Boolean returnValue = DataBase.exist(name, password);
            DataBase.disconnect();
            if (returnValue) {
                s.put("user", request.getParam("name"));
                System.out.println(s.id());
                response.end(Json.encodePrettily(s.id().toString()));
            } else {
                s.destroy();
                response.end("null");
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

和我的Js代码:

function tryToLogin(login, password){

    var urlBuilder = 'https://localhost:8090/log/' + login + '/' + password;

     $.ajax({
        url : urlBuilder,
        type: 'get',
        dataType: 'json',

        success : function(code_json, statut){

            console.log(" il a repondu " + code_json);
        }

    });
}

1 个答案:

答案 0 :(得分:0)

Vertx设置的唯一Cookie是“vertx-web.session”。您没有在示例中设置任何其他Cookie。

要检查cookie是否有效,您可以使用以下代码:

    Vertx vertx = Vertx.vertx();

    Router router = Router.router(vertx);
    router.route().handler(CookieHandler.create());
    router.route().handler(SessionHandler.create(LocalSessionStore.create(vertx)));

    router.get("/login").handler((r) -> {
        System.out.println("Got request");
        System.out.println("Session cookie " + r.getCookie("vertx-web.session").getValue());
       r.response().end("OK");
    });
    router.route("/*").handler(StaticHandler.create());

    vertx.createHttpServer().requestHandler(router::accept).listen(8888);

和JS客户:

    var urlBuilder = '/login';

    $.ajax({
        url : urlBuilder,
        type: 'GET',

        success : function(code_json, statut){

            console.log("got" + code_json);
        }

    });

你会得到:

Session cookie <UUID>

并且:

gotOK 

在JavaScript控制台中