В настоящее время я пытаюсь создать простой http-сервер, который работает на ip: 8080 и должен принимать звонки с веб-сайта, работающего на ip: 3000. Таким образом, я столкнулся с проблемами CORS. Я пытался разрешить их с помощью заголовка * Allow-Control, но не могу заставить его работать. Я использую сервер undertow в качестве отдельного элемента. Вот почему я не могу использовать, например, фильтры Wildflys CORS или аналогичные.
Я получаю сообщение об ошибке, что в предварительном запросе не задано поле Allow-Control. Когда я запускаю вызов Почтальона, он работает и, что более важно, устанавливаются поля заголовка.
Что я делаю не так?
Привет Pascal
public void createAndStartServer() {
_server = Undertow.builder()
.addHttpListener(PORT, "localhost", ROUTES).build();
_server.start();
}
private void handleLoginRequest(HttpServerExchange exchange){
exchange.getResponseHeaders().put(new HttpString("Access-Control-Allow-Origin"), "*");
exchange.getResponseHeaders().put(new HttpString("Access-Control-Allow-Headers"), "origin, content-type, accept, authorization, auth-token, username, password");
exchange.getResponseHeaders().put(new HttpString("Access-Control-Allow-Credentials"), "true");
exchange.getResponseHeaders().put(new HttpString("Access-Control-Allow-Methods"), "GET, POST, PUT, DELETE, OPTIONS, HEAD");
exchange.getResponseHeaders().put(new HttpString("Access-Control-Max-Age"), "1209600");
SimpleUserResponse rsp = new SimpleUserResponse(false);
if(exchange.getRequestHeaders().contains(HEADER_USERNAME)
&& exchange.getRequestHeaders().contains(HEADER_PASSWORD)){
String uname = exchange.getRequestHeaders().get(HEADER_USERNAME).getFirst();
String pwhash = exchange.getRequestHeaders().get(HEADER_PASSWORD).getFirst();
rsp = _core.handleLogin(uname, pwhash);
}
exchange.getResponseSender().send(_gson.toJson(rsp));
}