【问题标题】:How do I setup CORS on Lotus Domino?如何在 Lotus Domino 上设置 CORS?
【发布时间】:2014-07-28 18:52:46
【问题描述】:

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

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

我终其一生都无法弄清楚我错过了什么。有人能指出我正确的方向吗?

【问题讨论】:

  • 这有帮助吗? markbarton.com/?p=344
  • 这实际上是我最初用来设置它的页面,然后通过我从 Paul Whithers 找到的另一篇文章进行了验证(我认为,不确定)。
  • 检查 GET 是 HTTP 1.1 而不是 1.0。
  • 成功了吗?随意接受答案
  • 目前有完全相同的问题!

标签: xpages lotus-domino


【解决方案1】:

我知道这是一个老话题,但由于它没有得到回答并且有一些新闻,我认为值得投入我自己的发现。

  1. Mark Leusink 屈服于这一点,发现需要接受 GET 的返回代码 204 和任何写入(PUT / POST)操作的返回代码 201
  2. 现在可以通过 notes.ini 参数“HTTPAdditionalRespHeader=" 将第四个响应标头包含到所有网站规则中,请参见 technote

但是,我目前也在努力完成 CORS 任务,因为 Domino 总是以 401 响应预检(这似乎很清楚,因为它未经身份验证,至少在 Chrome 中)。

【讨论】:

    【解决方案2】:

    我认为你的配置很好,你可以 test it using CURL 。您应该能够通过检查与您使用的 URL 不同的任何 URL 来查看自定义标头。

    问题可能是由于您正在使用的 XPages 扩展库控件 REST 服务。我认为“HTTP 响应标头”不适用于此控件。我已经在 Domino 8.5.3 中对其进行了测试

    【讨论】:

      【解决方案3】:

      CORS 标头是响应的一部分,因此您需要检查您的页面是否有 CORS response 标头。无论如何,对于 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,所以你也需要检查一下。

      【讨论】:

      • 我的经验,FWIW:从 9.0.1 开始,当使用 控件时,这种技术似乎不起作用。我也找不到“响应标头”属性,也找不到将标头添加为元数据资源。
      • 您需要在代码中添加它。休息控件是它自己的 URL。您添加到页面的元数据无效。
      • “在代码中添加”是什么意思?如果您指的是上述答案中显示的 SSJS,我无法使其正常工作。如果你的意思是别的,你能进一步解释吗?如果我不能让它工作,我将切换到“普通”XAgent 设计。
      • 您的 TestRest 需要是 JavaScript 或 Java,现成的烘焙方法不会这样做。有趣的是……为什么网站规则不起作用?在这两种情况下,您会得到什么 response 标头(可能是设计使然)
      • 我确实尝试了这个建议 - 没有帮助。 (
      猜你喜欢
      • 2014-02-11
      • 2012-05-08
      • 1970-01-01
      • 1970-01-01
      • 2012-05-12
      • 1970-01-01
      • 2022-01-24
      • 2013-04-18
      • 2019-01-07
      相关资源
      最近更新 更多