Заголовок Access-Control-Allow-Origin (CORS) отсутствует в ответе при выполнении запроса с просроченным токеном

Я создаю приложение с помощью spring -security-oauth2. В общем, все работает нормально, и у меня есть три независимых клиента, использующих простой API, который я создал. Все клиентские приложения вызывают API из разных доменов. Все приложения могут регистрировать участников с помощью предоставления учетных данных клиента, а затем получать токены доступа для предоставления пароля и токены обновления.

Однако для всех трех клиентов, когда запрос отправляется с использованием просроченного токена доступа, ответ от сервера ресурсов не включает заголовок Access-Control-Allow-Origin. Это проблема для хал-браузера и приложения angular, поскольку они полагаются на ответы, содержащие заголовок Access-Control-Allow-Origin.

Каким весенним способом включить заголовок Access-Control-Allow-Origin в ответ на истекший токен?

У меня есть фильтр, добавляющий следующие заголовки на шлюз zuul, но фильтр никогда не запускается в случае запроса с истекшим токеном доступа.

    response.setHeader("Access-Control-Allow-Origin", "*");
    response.setHeader("Access-Control-Allow-Methods", "POST, PUT, GET, OPTIONS, DELETE, HEAD");
    response.setHeader("Access-Control-Max-Age", "3600");
    response.setHeader("Access-Control-Allow-Headers",
            "X-Requested-With, WWW-Authenticate, Authorization, Origin, Content-Type, Version");
    response.setHeader("Access-Control-Expose-Headers",
            "X-Requested-With, WWW-Authenticate, Authorization, Origin, Content-Type");

person John Deverall    schedule 20.05.2016    source источник


Ответы (1)


После погружения в код Spring выяснилось, что эта проблема была вызвана порядком выполнения фильтра. Фильтр OAuth был вызван первым и вызвал исключение InvalidAccessToken, что предотвратило запуск моего фильтра CORS и добавило необходимый заголовок Acccess-Control-Allow-Origin.

Добавление аннотации

@Order(Ordered.HIGHEST_PRECEDENCE)

к моему фильтру CORS помогло.

person John Deverall    schedule 22.05.2016
comment
Большое спасибо! Я целый день потратил на эту проблему - person Gabriel; 10.10.2016