如何在Websphere Application Server Liberty Profile V8.5中定义CORS

如何在Websphere Application Server Liberty Profile V8.5中定义CORS,cors,websphere-liberty,Cors,Websphere Liberty,是否可以在WebSphereApplicationServerLiberty概要V8.5中应用跨源资源共享(CORS) 我搜索了这本红皮书,但找不到有关它的任何信息。 () 我不可能像这样通过编程方式设置标题: Access-Control-Allow-Origin: * ()您必须将以下JAR添加到您的WEB-INF/lib文件夹中: 在web.xml中,您必须添加以下规则: <filter> <filter-name>CORS</filter-

是否可以在WebSphereApplicationServerLiberty概要V8.5中应用跨源资源共享(CORS)

我搜索了这本红皮书,但找不到有关它的任何信息。 ()

我不可能像这样通过编程方式设置标题:

Access-Control-Allow-Origin: *

()

您必须将以下JAR添加到您的
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>

科尔斯
com.thetransactioncompany.cors.CORSFilter
科尔斯
/*

适用于那些在使用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...);
    }
}

从2016年1月的测试版开始(编辑:现在在Liberty 8559中),WebSphereLiberty以本机方式支持CORS。您只需使用所需的CORS选项配置server.xml,下面是一个示例:

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

domain属性用于您希望应用此配置的应用程序根,这意味着它不会影响任何其他上下文根。其他7个属性完全遵循官方的CORS规范(),因此它们是非常不言自明的


链接到beta:

以从ArthurDM扩展到CORS: 有文档记录的页面对我解释不够。我的设置如下,我只想与您分享:

  • 使用Liberty Profile 8.5.5.9。因此,CORS对liberty profile的添加不再只是测试版
  • 使用JavaEE批处理并连接批处理以将其所有数据放入存储库(而不是内存)
  • 我想将batchManagement-1.0特性用于它附带的批处理的RESTAPI
  • 角度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" />


祝你好运,我希望这会有所帮助。

我目前正在调查:我的情绪低落(我可以在网络服务中看到我的指纹)!唯一的问题是,该服务永远不会返回,我的浏览器一直在等待响应……请查看我对Liberty中官方CORS支持的回答。如果war仅包含html和javascript,则不要认为这是可行的。是否有其他方法可以配置WebSphere liberty server以针对这种情况启用CORs。@DarVar您是否已经解决了问题?如果你只提供HTML和JavaScript,你就不会有这些问题。仅当您在另一个套接字上调用Web服务时,该方法才起作用,但不幸的是,在我的例子中,需要更改类加载模式以使其起作用,这是不可取的。这里可以找到该方法的更详细解释。