使用Domino Data Service将Angular前端连接到Lotus Notes

时间:2019-08-19 12:18:38

标签: angular rest lotus-domino

我正在尝试使用Domino数据服务从NodeJS上运行的Angular应用程序获取Lotus Notes / Domino数据库视图数据。我在多米诺骨牌服务器上设置了网站文档和Internet站点,并在服务器配置中启用了数据。我的角度应用程序和多米诺骨牌数据库在不同的服务器上运行。

当我尝试使用“ http:{host} / {database} / api / data / collections / unid / {unid}”从本地获取数据时,我能够以JSON格式获取数据。但是,当我尝试从我的角度应用程序中获取相同的数据时,却出现了错误:

  

CORS策略阻止了从来源“ https://localhost:9443”访问“ https:// {host} / {database} / api / data / collections / unid / {unid}”处的XMLHttpRequest:预检请求未通过访问控制检查:所请求的资源上没有“ Access-Control-Allow-Origin”标头

我的Angular应用程序正在端口9443上运行。

我已经搜索了此错误,并尝试了所有尝试,但还没有运气。我在Domino服务器Internet网站文档中添加了所有标头,还启用了所有REST方法(GET,PUT,DELETE等)。但是仍然出现相同的错误。

这是我正在使用的代码,

    getDoc() {
    let headers = new Headers();
    headers.append('Content-Type', 'application/json');
    let options = new RequestOptions({ headers: headers });
    this.http.get(url, options).subscribe(
      data => console.log(data),
      error => console.error(error),
      () => { }
    )
    }

2 个答案:

答案 0 :(得分:1)

由于您的Angular应用程序是从其他服务器加载的,因此Domino REST API请求违反了浏览器的Same Origin策略。您应该阅读有关同源起源策略和跨起源资源共享(CORS)的信息。互联网上有很多很好的教程。

但是摘要是您有两个选择:

  1. 将Angular应用程序移动到Domino服务器。与大多数HTTP服务器一样,Domino可以轻松托管HTML,CSS和JavaScript文件等静态资源。如果使用这种方法,您的Angular脚本将向相同的源发出REST API请求,并且CORS错误将消失。

  2. 在Domino服务器上配置跨源资源共享(CORS)。如果使用的是Domino 10.0.1 FP2,则可以使用新的CORS filter。对于Domino的早期版本,这更加困难。我相信您可以使用网站规则来模拟CORS,但是您必须在此上寻求帮助。

答案 1 :(得分:0)