Как поместить заголовок «Access-Control-Allow-Origin: *» в узел sling

#curl #aem #sling

#curl #aem #слинг

Вопрос:

Я столкнулся с проблемой CORS ie. Та же политика происхождения, когда я пытаюсь получить веб-службу с сервера. Все, что мне нужно сделать, это поместить этот Access-Control-Allow-Origin: * заголовок в мой узел sling. Я пытался использовать команду curl для включения заголовка, но это не сработало. Итак, пожалуйста, подскажите мне способ, чтобы я мог поместить этот заголовок в свой узел apache sling и решить эту проблему CORS.

Заранее благодарю.

Комментарии:

1. Access-Control-Allow-Origin: * вероятно, слишком широкий. Почему бы просто не разрешить домен, из которого вы пытаетесь отправлять запросы?

2. Кроме того, являетесь ли вы владельцем рассматриваемой веб-службы? Или вы пытаетесь добавить заголовок к самому запросу?

3. У нас есть веб-служба, и как я могу разрешить домен, из которого мы пытаемся сделать запрос?

4. Узел — это единица данных в репозитории JCR (что-то вроде строки в реляционной базе данных). Это не имеет ничего общего с http-запросами. Вы хотите включить заголовок в HTTP-ответы Sling?

Ответ №1:

Напишите фильтр и убедитесь, что он отображается только для вашего сайта. (вы можете сделать это, используя свойство filter.pattern osgi) и используйте приведенный ниже метод doFilter,

     public void doFilter(final ServletRequest req, final ServletResponse res, final FilterChain chain) throws IOException, ServletException {
        final HttpServletRequest request = (HttpServletRequest)req;
        final HttpServletResponse response = (HttpServletResponse)res;
        String origin = request.getHeader("Origin");
        if (origin != null) {
            if (origin.contains("yourwebsitename")) {
                 response.addHeader("Access-control-Allow-Origin", origin);
                 response.addHeader("Access-control-Allow-Methods", "GET, POST, OPTIONS");
            }
        }
        chain.doFilter(request, response);
    }
 

Спасибо,
Баладжи.