Как обрабатывать CORS с помощью JAX-RS с Jersey 3.x? Попробуйте как 2.x, но он не работает - PullRequest
0 голосов
/ 06 мая 2020

Я создал веб-службу, которая дает ответ Json. Однако, когда я пытаюсь добавить фильтр CORS таким образом Как обрабатывать CORS с помощью JAX-RS с Jersey , он не работает. Похоже, фильтр CORS не работает с @Provider, как с jersey 2.x. Я новичок в этой версии и не знаю, как включить сканирование упаковки (я думаю, активируется автоматически). Сервис имеет аутентификацию Basi c на сервере Tomcat (9.0.34). Любой подход приветствуется. Спасибо!

import jakarta.ws.rs.container.ContainerRequestContext;
import jakarta.ws.rs.container.ContainerResponseContext;
import jakarta.ws.rs.container.PreMatching;

@PreMatching
@Provider
public class CorsFilter implements jakarta.ws.rs.container.ContainerResponseFilter {

        @Override
        public void filter(ContainerRequestContext request,
                ContainerResponseContext response) throws IOException {
            response.getHeaders().add("Access-Control-Allow-Origin", "*");
            response.getHeaders().add("Access-Control-Allow-Headers",
                    "origin, content-type, accept, authorization");
            response.getHeaders().add("Access-Control-Allow-Credentials", "true");
            response.getHeaders().add("Access-Control-Allow-Methods",
                    "GET, POST, PUT, DELETE, OPTIONS, HEAD");
        }
    }

Также мой xml файл:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>order_services</display-name>
  <servlet>
    <servlet-name>Jersey RESTful Application</servlet-name>
    <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
    <init-param>
      <param-name>jersey.config.server.provider.packages</param-name>
      <param-value>com.orders.services</param-value>
    </init-param>
    <init-param>
      <param-name>com.sun.jersey.spi.container.ContainerResponseFilters</param-name>
      <param-value>com.orders.services.CorsFilter</param-value>
    </init-param>
  </servlet>
  <servlet-mapping>
    <servlet-name>Jersey RESTful Application</servlet-name>
    <url-pattern>/get/*</url-pattern>
  </servlet-mapping>
  </web-app>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...