В моем приложении JAXRS я выдаю исключение LicenseKeyException, если лицензия недействительна.Это исключение перехватывается ExceptionMapper, который отвечает вызывающей стороне кодом состояния 403, причем сущность содержит некоторую дополнительную информацию, которую я хочу отправить вместе со статусом.
Но на моем клиенте javascript в XMLHttpRequest,Я получаю только статус, а не ответ.
Java-код
@Provider
public class LicenseKeyExceptionMapper implements ExceptionMapper<LicenseKeyException> {
@Override
public Response toResponse(final LicenseKeyException exception) {
return Response
.status(Response.Status.FORBIDDEN)
.entity(exception.getMessage()) // I want this to be available to the javascript caller
.build();
}
}
Javascript code
let xhr = new XMLHttpRequest();
xhr.open(opt.method, makeActuelURL(opt.url), true);
xhr.setRequestHeader("Content-Type", "application/json");
xhr.setRequestHeader("licenseKey", opt.licenseKey);
let json = JSON.stringify({...opt, charsetName: "utf-8"});
xhr.responseType = "json";
xhr.onload = () => {
if (xhr.status === 200)
resolve(xhr);
else
reject(makeError(xhr));
};
xhr.onerror = () => reject(makeError(xhr));
xhr.send(json);
Когда статус не 200 (я пробовал 500 и 403), поле ответа в объекте xhr является нулевым.Я ожидал найти в коде Java сущность, которую, как мне казалось, я поместил туда.
Что я делаю не так?