Джерси: ошибка при создании JAXBContext для обработки wadl

У меня есть REST API, закодированный трикотажем, который требует аутентификации. Для аутентификации вам необходимо отправить сообщение на этот URL: http: // localhost: 8080 / логин с вашими учетными данными в теле.

Он отлично работает при публикации из инструмента API, такого как paw, но я не могу заставить его работать с Angular 5, я всегда получаю эту ошибку в консоли браузера:

Response to preflight request doesn't pass access control check: No 
Access-Control-Allow-Origin' header is present on the requested resource

И это консоль сервера:

WARNING [http-nio-8080-exec-11] 
org.glassfish.jersey.internal.Errors.logErrors The following warnings 
have been detected: WARNING: Unknown HK2 failure detected:
MultiException stack 1 of 2
javax.ws.rs.ProcessingException: Error creating a JAXBContext for 
wadl processing.

Полная трассировка стека

Вот мой конфиг

Ресурс:

@POST
@Path("login")
public Response getSession (Login login, @Context HttpServletRequest req) {

    System.out.println(login.getUsername());
    System.out.println(login.getPassword());

    LDAP ldap = new LDAP();

    String role = "none";

    try {
        if (ldap.auth(login.getUsername(), login.getPassword())) {
            role = ldap.getRole(login.getUsername());
        }

    } catch (Exception e) {

        log.error(e);

        throw new NotAuthorizedException(e.getMessage(), Response.Status.UNAUTHORIZED);

    }


    HttpSession session = req.getSession(true);
    session.setAttribute("user", login.getUsername());
    session.setAttribute("role", role);

    return Response.status(Response.Status.OK)
            .entity(session.getId())
            .build();

}

Pom.xml:

<dependencies>
    <dependency>
        <groupId>org.glassfish.jersey.containers</groupId>
        <artifactId>jersey-container-servlet-core</artifactId>
    </dependency>

    <dependency>
        <groupId>org.glassfish.jersey.media</groupId>
        <artifactId>jersey-media-json-jackson</artifactId>
        <version>2.26</version>
    </dependency>

    <dependency>
        <groupId>org.glassfish.jersey.inject</groupId>
        <artifactId>jersey-hk2</artifactId>
    </dependency>
    <dependency>
        <groupId>org.glassfish.jersey.ext</groupId>
        <artifactId>jersey-bean-validation</artifactId>
        <version>2.26</version>
    </dependency>
    <dependency>
        <groupId>javax.xml.bind</groupId>
        <artifactId>jaxb-api</artifactId>
        <version>2.3.0</version>
    </dependency>
    <dependency>
        <groupId>javax.activation</groupId>
        <artifactId>activation</artifactId>
        <version>1.1</version>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.39</version>
    </dependency>
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-api</artifactId>
        <version>2.10.0</version>
    </dependency>
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-core</artifactId>
        <version>2.10.0</version>
    </dependency>
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>servlet-api</artifactId>
        <version>2.5</version>
    </dependency>
</dependencies>
<properties>
    <jersey.version>2.26</jersey.version>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

Угловой код:

const httpOptions = {
    headers: new HttpHeaders({
        'Content-Type':  'application/json'
    })
};

login(username, password) {
    const body = JSON.stringify({'username' : username, 'password' : password});
    return this.http.post(baseURI, body, httpOptions);
}

Я использую Java SE 9.0.1 и angular 1.7.3

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
1 893
1

Ответы 1

Это указывает на проблему с CORS.
.

Access-Control-Allow-Origin' header is present on the requested resource

В целях безопасности сервер принимает запросы только с одним и тем же источником. Вы можете попробовать установить Access-Control-Allow-Origin: * для ответа сервера.

Проверьте эту статью https://www.html5rocks.com/en/tutorials/cors/

Надеюсь, это поможет вам

Другие вопросы по теме