#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);
}
Спасибо,
Баладжи.