Как определить CORS в WebSphere Application Server Liberty Profile V8.5

Можно ли применять совместное использование ресурсов (CORS) в WebSphere Application Server Liberty Profile V8.5?

Я искал redbook, но не мог найти IBM об этом. (http://www.redbooks.ibm.com/abstracts/sg248076.html?Open)

Невозможно настроить программные заголовки следующим образом:

Access-Control-Allow-Origin: *

(http://enable-cors.org/server.html)

Ответы

Ответ 1

Вам нужно добавить следующие jars в папку WEB-INF/lib:

В вашем web.xml вам необходимо добавить следующие правила:

<filter>
    <filter-name>CORS</filter-name>
    <filter-class>com.thetransactioncompany.cors.CORSFilter</filter-class>
</filter>
<filter-mapping>
        <filter-name>CORS</filter-name>
        <url-pattern>/*</url-pattern>
</filter-mapping>

Ответ 2

Начиная с бета-версии января 2016 года (править: и теперь в Liberty 8559), WebSphere Liberty поддерживает CORS изначально. Вы просто настраиваете server.xml с параметрами CORS, которые вы хотите, вот пример:

<cors domain="/sampleApp/path"
   allowedOrigins="https://alice.com:8090"
   allowedMethods="GET, DELETE, POST"
   allowedHeaders="Accept, MyRequestHeader1"
   exposeHeaders="MyResponseHeader1"
   allowallowCredentials="true"
   maxAge="3600" />

Атрибут домена предназначен для корня приложения, к которому вы хотите применить эту конфигурацию, что означает, что он не повлияет на другие корни контекста. Остальные 7 атрибутов следуют точно официальной спецификации CORS (https://www.w3.org/TR/cors/), поэтому они довольно понятны.

Ссылка на бета-версию: https://developer.ibm.com/wasdev/blog/2016/01/15/beta-websphere-liberty-and-tools-january/

Ответ 3

Чтобы перейти к CORS из ArthurDM: Документированные страницы, на которых я недостаточно объясняю. Моя настройка следующая, и я просто хочу поделиться ею с вами:

  • Использовать профиль Liberty 8.5.5.9. Таким образом, дополнение CORS к профилю свободы больше не находится в бета-версии.
  • Используйте пакет JavaEE и подключите пакет, чтобы поместить все его данные в репозиторий (не в памяти).
  • Я хотел использовать функцию batchManagement-1.0 для остальной api партии, которая поставляется с ней.
  • Angular 1.

В конце концов, следующая настройка cors сделала трюк:

    <cors domain="/ibm/api" 
       allowedOrigins="http://localhost:9080" 
       allowedMethods="GET, POST, PUT, DELETE" 
       allowedHeaders="Accept, Accept-Language, Content-Language, Content-Type" 
       exposeHeaders="Content-Type" 
       allowCredentials="true" 
       maxAge="3600" />

Удачи, и я надеюсь, что это поможет.

Ответ 4

Для тех, кто ищет обходной путь при использовании IBM Websphere Application Server и ищет ответ на применение CORS. (Вы должны делать это программно) Я знаю, что op ищет ответ, не используя java-код, иначе... Это может быть полезно кому-то другому. Запишите фильтр, который позволяет программным образом устанавливать заголовки ответов. Например:

public class YourFilter implements javax.servlet.Filter{

    @Override
    public void doFilter(ServletRequest request,ServletResponse servletResponse , FilterChain chain) throws IOException, ServletException {
        HttpServletResponse response = (HttpServletResponse ) servletResponse ;
        response.setHeader("Access-Control-Allow-Origin", "*");
        response.setHeader("Access-Control-Allow-Headers","Access-Control-Allow-Origin, X-Requested-With", bla,bla...);
    }
}