对IBM Connections API的CORS支持

时间:2016-02-08 15:34:45

标签: cors ibm-connections

我们正在编写一个独立的JavaScript应用程序,它必须通过Connections API在IBM Connections社区中创建Wiki页面。但是,浏览器会阻止对Connections API的请求,因为未在连接API上配置跨源资源共享(CORS)。

是否可以配置连接API以允许来自我们所有内部应用程序的请求,例如*.our-company.com?我们正在运行Connections v5.0。

3 个答案:

答案 0 :(得分:1)

是的,这是可能的。您只需在IHS中进行配置即可!此配置代码段可能对您有用:

RewriteCond %{HTTP:Origin} (.+\.<yourdomain>\.com) [NC]
RewriteRule .* - [E=acceptorigin:%1]
Header set Access-Control-Allow-Origin %{acceptorigin}e env=acceptorigin
Header set Access-Control-Allow-Credentials true env=acceptorigin
Header set Access-Control-Allow-Methods "POST, GET, HEAD" env=acceptorigin 
Header set Access-Control-Max-Age 3600 env=acceptorigin 
Header set Access-Control-Allow-Headers Content-Type env=acceptorigin

答案 1 :(得分:1)

丹尼尔的回答是一个很好的起点,适用于简单的跨域请求,但我发现在状态变化,预先发出的请求中需要克服一些障碍。通过取消注释IBM HTTP Server httpd.conf文件中的相应行来启用Apache重写模块后,我的解决方案是将以下内容添加到VirtualHost区域:

RewriteEngine on
RewriteCond %{HTTP:Origin} ^(http(s)?://mysubdomain.mydomain.com)$ [NC]
RewriteRule .* - [E=acceptorigin:%1]
Header always set Access-Control-Allow-Origin %{acceptorigin}e env=acceptorigin
Header always set Access-Control-Allow-Credentials true env=acceptorigin
Header always set Access-Control-Allow-Methods "POST, GET, HEAD, OPTIONS, DELETE, PUT" env=acceptorigin 
Header always set Access-Control-Max-Age 3600 env=acceptorigin 
Header always set Access-Control-Allow-Headers Content-Type env=acceptorigin

RewriteCond %{HTTP:Origin} ^(http(s)?://mysubdomain.mydomain.com)$ [NC]
RewriteCond %{REQUEST_METHOD} OPTIONS
RewriteRule .* - [R=200,L]

RequestHeader unset Origin env=acceptorigin

(当然,Daniel在域中使用了更通用的正则表达式:我只需要一个特定的来源,因此进行了相应的配置。)

“始终设置”对于预先发出的跨域请求非常重要,这些请求会在发出实际请求之前向服务器发送OPTIONS请求。这里,“始终”意味着“甚至将这些标题放在错误响应上”。 Connections不知道如何处理OPTIONS请求并返回错误;我通过设置标题来解决这个问题,然后将状态代码重新写入200(浏览器仍然会收到警告错误的文本,但不关心)。

您不需要最后的“未设置”行来通过Web服务器,但至少Connections API的某些部分将拒绝具有403的Origin头的POST请求。要解决此问题,如果标头与我允许的原点匹配,我在IBM WebSphere Application Server获取它之前将Origin标头从请求中删除。

答案 2 :(得分:-1)

IBM Connections 5.5可以直接处理CORS。您需要向LotusConnections-config.xml添加两个自定义属性:

<genericProperty name="CORS.Trusted.Websites">mydom1.com, mydom2.com</genericProperty>
<genericProperty name="CORS.Expose.Headers">Content-Encoding, Content-Length</genericProperty>

详情可在此处找到:

IBM Connections 5.5 API - CORS