CXF 3.2.2 Ошибка CORS с отсутствием заголовка «Access-Control-Allow-Origin» - PullRequest
0 голосов
/ 12 октября 2018

Я разрабатывал службу Restful, используя пружинную загрузку CXF +.и были проблемы с настройкой CORS

Я установил CORS на интерфейсе определения сервиса (GateRs)

...
@Service
@CrossOriginResourceSharing(
    allowAllOrigins = true, 
    allowHeaders = {
            "Accept", "Accept-Charset", "Accept-Encoding", "Accept-Datetime", 
            "Accept-Language", "Authorization", "Content-Language", "Content-Length", 
            "Content-Type", "Origin", "User-Agent"},
    exposeHeaders = {
            "Accept", "Accept-Charset", "Accept-Encoding", "Accept-Datetime", 
            "Accept-Language", "Authorization", "Content-Language", "Content-Length", 
            "Content-Type", "Origin", "User-Agent"},
    allowCredentials = true, 
    maxAge = 1209600 )
public interface GateRs {

    @POST
    @Path("/require")
    @Consumes(MediaType.APPLICATION_JSON)
    @Produces(MediaType.APPLICATION_JSON)
    @VoluntarySecure
    public Res require(Req req);    
...

реализуем интерфейс с классом

@Component
public class Gate implements GateRs {   

        @Override
        public Res require(Req req) { 
...

, присоединяем CrossOriginResourceSharingFilterк служебному компоненту

    @Bean
        public CrossOriginResourceSharingFilter cors() {
            return new CrossOriginResourceSharingFilter();
        }

    @Bean(destroyMethod = "destroy") @DependsOn(Bus.DEFAULT_BUS_ID)
    public Server jaxRsServer() {
        final JAXRSServerFactoryBean factory = new JAXRSServerFactoryBean();

        factory.setServiceBean(new Gate());
        factory.setProviders(Arrays.asList(jackson(), cors()));
        factory.setBus(springBus());
        factory.setAddress("/Gate");

        return factory.create();
    } 
...

клиент - мобильное приложение на основе Ionic, эмулируемое браузером Chrome.

«/ Gate / require» вернул «404», так как CORS не удалось выполнить снет заголовка «Access-Control-Allow-Origin».

Я изучил детали;и обнаружил, что предпечатная проверка («OPTIONS») действительно удалась;«POST» не удалось, сработали вышеупомянутые сообщения

предпечатная проверка (ОПЦИИ)

enter image description here

POST не удалось;Похоже, что серверная сторона не представила заголовок «Access-Control-Allow-Origin» в ответном сообщении enter image description here

У кого-нибудь есть идеи или предложения?

спасибо

1 Ответ

0 голосов
/ 22 октября 2018

Я наконец решил проблему, изменив @CrossOriginResourceSharing следующим образом:

...
@CrossOriginResourceSharing(
    allowAllOrigins = true,
    allowCredentials = true, 
    maxAge = 1209600 )
public interface GateRs {
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...