有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

使用带有java spark的javascript获取api的挂起承诺状态(POST请求)

我正在尝试使用ES6的fetch api将一些登录数据发布到java spark服务器。GET请求工作得很好,但当我试图发布一些东西时,客户端的承诺仍然“待定”。我检查了,服务器接收到请求主体,并将其解析为一个对象。使用postman,它也会返回true或false,所以我认为CORS设置有问题。我对这一点还不熟悉,所以我觉得应该行得通。我正在使用VueJS,但我认为这并不重要,我想我应该添加这些信息,也许会有所帮助。我将在下面发布代码

JS:

methods: {
    login: function () {
        data = '"perfectly valid json string"'
        this.postData('http://te.st/login', data)
    },
    postData: function(url, data){
        return fetch(url, {
            body: data,
            method: 'POST',
        })
        .then(response => response.json())
        .then(function (result){
            app.response = result
        })
    }
}

爪哇:

private static void enableCORS(final String origin, final String methods, final String headers) {

    options("/*", (request, response) -> {

        String accessControlRequestHeaders = request.headers("Access-Control-Request-Headers");
        if (accessControlRequestHeaders != null) {
            response.header("Access-Control-Allow-Headers", accessControlRequestHeaders);
        }

        String accessControlRequestMethod = request.headers("Access-Control-Request-Method");
        if (accessControlRequestMethod != null) {
            response.header("Access-Control-Allow-Methods", accessControlRequestMethod);
        }

        return "OK";
    });

    before((request, response) -> {
        response.header("Access-Control-Allow-Origin", origin);
        response.header("Access-Control-Request-Method", methods);
        response.header("Access-Control-Allow-Headers", headers);
        response.type("application/json");
    });
}

(在代码中称为enableCORS("*","GET,POST","Origin, Content-Type, Access-Control-Allow-Origin");

终点是:

post("/login", (req, res) -> {
        boolean ret = dao.checkLogin(gson.fromJson(req.body(), User.class));
        return gson.toJson(ret);
    });

共 (0) 个答案