如何在Lotus Domino上设置CORS?

时间:2014-06-07 17:30:00

标签: xpages lotus-domino

我试图通过跨域请求通过REST与Domino通信,但我遇到了一个问题。我已经设置了一个Internet站点文档,其中包含IP地址,localhost和列为主机名的服务器名称。互联网站点正在作为重定向规则工作我在该互联网站点上设置正在运行。我还设置了以下网站规则:

Web Site Rule

现在,当我尝试通过html GET请求访问rest.xsp页面时,我收到此错误:

    XMLHttpRequest cannot load 
http://192.168.1.104/testing/restService.nsf/rest.xsp/testRest?reqType=UserCanAc…TOP&startId=BA4241EC74912860ED60FD1123473BF7&returnType=ARRAYOBJECTS. 
No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 
'http://127.0.0.1:8020' is therefore not allowed access.

以下是请求标头:

Accept:application/json, text/javascript, */*; q=0.01
Cache-Control:max-age=0
Origin:http://127.0.0.1:8020
Referer:http://127.0.0.1:8020/Backbone%20Playground/index.html
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.114 Safari/537.36

我不能为我的生活弄清楚我错过了什么。有人能指出我正确的方向吗?

3 个答案:

答案 0 :(得分:2)

CORS标头是响应的一部分,因此您需要检查您的网页是否有CORS 响应标头。在任何情况下,对于XPage,您都可以直接访问servlet response object并在XPage中设置标题:

   var externalContext = facesContext.getExternalContext(); 
   var response = externalContext.getResponse();
   response.setHeader("Access-Control-Allow-Origin","*");

您希望使用更严格的设置替换*Cors doesn't work in all browsers,所以你也需要检查一下。

答案 1 :(得分:2)

我认为您的配置很好,您可以test it using CURL。您应该可以通过选中与您正在使用的网址不同的任何网址来查看自定义标题。

问题可能是由于XPages扩展库控件,REST服务,您正在使用。我认为" HTTP响应标头"不适用于此控件。我在Domino 8.5.3中测试过它。

答案 2 :(得分:1)

我知道这是一个古老的线索,但由于它没有被回答而且有一些新闻,我认为值得投入我自己的发现。

  1. Mark Leusink屈服于此并发现需要接受GET的返回代码204和201的任何写入(PUT / POST)操作
  2. 现在有一种新的可能性,即通过notes.ini参数“HTTPAdditionalRespHeader =”为所有网站规则添加第四个响应标头,请参阅此technote
  3. 然而,我目前也在努力完成一项CORS任务,因为Domino总是以预测的401响应(这看起来很明显,因为它未经过身份验证,至少在Chrome中)。