Как я могу уменьшить частоту кадров живого видео в qml?

Я не знаю никакой стандартной поддержки CORS с Джерси. @CrossOriginResourceSharing , насколько я могу судить, является аннотацией CXF. Поэтому я не совсем уверен, как вы используете эту аннотацию с Джерси.

С Джерси, чтобы обращаться с CORS, я обычно использую ContainerResponseFilter. ContainerResponseFilter для Джерси 1 и 2 немного отличаются. Поскольку вы не указали, какую версию вы используете, я отправлю оба.

Jersey 2

import java.io.IOException;
import javax.ws.rs.container.ContainerRequestContext;
import javax.ws.rs.container.ContainerResponseContext;
import javax.ws.rs.container.ContainerResponseFilter;

@Provider
public class CORSFilter implements 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");
    }
}

Если вы используете сканирование пакетов для обнаружения поставщиков и ресурсов, @Provider аннотация должна заботиться о конфигурации для вас. Если нет, то вам нужно будет явно зарегистрировать его с помощью подкласса ResourceConfig или Application.

Пример кода для явного регистрации фильтра с помощью ResourceConfig:

final ResourceConfig resourceConfig = new ResourceConfig();
resourceConfig.register(new CORSFilter());
final final URI uri = ...;
final HttpServer httpServer = GrizzlyHttpServerFactory.createHttpServer(uri, resourceConfig);

Джерси 1

import com.sun.jersey.spi.container.ContainerRequest;
import com.sun.jersey.spi.container.ContainerResponse;
import com.sun.jersey.spi.container.ContainerResponseFilter;

public class CORSFilter implements ContainerResponseFilter {
    @Override
    public ContainerResponse filter(ContainerRequest request,
            ContainerResponse response) {

        response.getHttpHeaders().add("Access-Control-Allow-Origin", "*");
        response.getHttpHeaders().add("Access-Control-Allow-Headers",
                "origin, content-type, accept, authorization");
        response.getHttpHeaders().add("Access-Control-Allow-Credentials", "true");
        response.getHttpHeaders().add("Access-Control-Allow-Methods",
                "GET, POST, PUT, DELETE, OPTIONS, HEAD");

        return response;
    }
}

web.xml, вы можете использовать


  com.sun.jersey.spi.container.ContainerResponseFilters
  com.yourpackage.CORSFilter

Или ResourceConfig вы можете сделать

resourceConfig.getContainerResponseFilters().add(new CORSFilter());

Или сканирование пакета с помощью аннотации @Provider.


EDIT

Обратите внимание, что приведенный выше пример может быть улучшен. Вам нужно будет узнать больше о том, как работает CORS. См. здесь . Во-первых, вы получите заголовки для всех ответов. Это может быть нежелательно. Возможно, вам просто нужно обработать предполетный (или ОПЦИИ). Если вы хотите увидеть улучшенный фильтр CORS, вы можете проверить исходный код для RESTeasy CorsFilter

1
задан eyllanesc 16 January 2019 в 05:26
поделиться