Как определить 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...);
}
}