使用带有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) 个答案