Xpages 如何在Lotus Domino上设置CORS?

Xpages 如何在Lotus Domino上设置CORS?,xpages,lotus-domino,Xpages,Lotus Domino,我试图通过跨域请求通过REST与Domino通信,但遇到了一个问题。我已经设置了一个Internet站点文档,其中的IP地址、localhost和服务器名列为主机名。该internet站点正在作为重定向规则工作,我在该internet站点上设置的重定向规则正在工作。我还使用以下内容设置了网站规则: 现在,当我试图通过html GET请求点击rest.xsp页面时,我遇到以下错误: XMLHttpRequest cannot load http://192.168.1.104/test

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

现在,当我试图通过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

我一辈子都搞不清楚我错过了什么。有人能给我指出正确的方向吗?

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

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

您想用更严格的设置替换
*
,因此,您也需要检查该端。

我认为您的配置很好,您可以。您应该能够通过检查与您正在使用的URL不同的URL来查看自定义标题


问题可能是由于您使用的XPages扩展库控件REST服务造成的。我认为“HTTP响应头”不适用于此控件。我已经在Domino8.5.3中测试过了,我知道这是一个有点老的思路,但是由于它没有被回答,而且有一些消息,我认为值得加入我自己的发现

  • 深入研究后发现,GET和201都需要接受返回代码204,而任何写(PUT/POST)操作也需要接受返回代码201
  • 现在,通过notes.ini参数“HTTPAdditionalRespHeader=”,可以在所有网站规则中包含第四个响应标题,请参见此

  • 然而,我目前也在努力完成CORS任务,因为Domino总是在飞行前用401响应(这似乎很清楚,因为它未经验证,至少在Chrome中是如此)。

    这有帮助吗?这实际上是我最初用来设置它的页面,然后通过我从Paul Whithers那里找到的另一篇帖子进行验证(我想,不确定)。检查GET是HTTP 1.1而不是1.0。它工作了吗?请随意接受答案,因为您目前有完全相同的问题!我的经验,FWIW:从9.0.1开始,当使用控件时,这种技术似乎不起作用。我既找不到“response headers”属性,也无法将标头添加为元数据资源。您需要在代码中添加它。rest控件是它自己的URL。添加到页面的元数据无效。您所说的“在代码中添加”是什么意思?如果你指的是上面答案中显示的SSJ,我无法让它工作。如果你的意思是别的,你能进一步解释一下吗?如果我不能让它工作,我将切换到“普通”XAgent设计。您的TestRest需要是JavaScript或Java,现成的方法无法做到这一点。有趣的是。。。。为什么网站规则不起作用?在这两种情况下(可能是出于设计),您会得到什么样的响应标题?我确实尝试过这个建议,但没有帮助。(