Domino,CORS和OPTIONS请求

时间:2015-04-06 19:27:47

标签: xpages lotus-domino xpages-extlib

我正在开发一个使用Domino作为后端的AngularJS应用程序。由于我想要比Domino Access Services(DAS)提供的更多自定义选项,我的下一个选择是扩展库中的REST服务。

该应用程序在与Domino不同的域上运行,因此我需要添加CORS标头以使该方案有效。使用CORS,浏览器(对于某些请求)首先向服务器发出预检HTTP OPTIONS请求以检查允许哪些方法(更多关于CORS的信息:http://www.html5rocks.com/en/tutorials/cors/)。

我现在遇到的问题是Domino在该OPTIONS请求上抛出Method Not Allowed错误(响应代码405)。我已经将它添加到我的网站文档中允许的方法列表中(尽管我不确定REST服务是否会尊重它)。 DAS请求很好。

查看扩展程序库中RestDocumentJsonService的{​​{3}},似乎根本不支持OPTIONS方法。

有关如何使这项工作的任何想法?或者解决方法?我知道我可以编写自己的servlet或在Domino前安装代理,但我不想走这条路(但是; - )

2 个答案:

答案 0 :(得分:2)

如果您尝试使用经过身份验证的CORS,则需要至少四个标头才能正常工作

Access-Control-Allow-Credentials: true
access-control-allow-header: X-Requested-With, Origin, Accept, Accept-Version, Content-Type
access-control-allow-method: OPTIONS, GET, PUT, POST, DELETE, PATCH
access-control-allow-origin: http://yourOtherDomain.com

不幸的是,您只能通过网站文档添加3个标题

您无法通过阶段侦听器添加任何内容,因为ExtLib Rest服务不会通过XSP阶段

您可以使用代理,例如nginx,或者在我的情况下,我使用IHS

http://xomino.com/2014/04/20/adding-custom-http-headers-to-domino-r9-using-ibm-http-server-ihs/

或者您可以滚动自己的REST服务并添加所需的标题

答案 1 :(得分:0)

马克,快点评论。我不确定这是否适合你。

但我在当前项目中所做的是将Angular应用程序放在NSF的WebContent文件夹中。这有几个目的 - 其中一个目的是在同一个NSF中使用正确版本的后端代码轻松部署。我已将数据库设置为源代码控制,并直接在NSF的磁盘项目中编辑Angular部分,并在需要运行时同步它们。作为副作用,此设置还将解决任何CORS问题,因为客户端代码是从调用我的REST服务时从同一域启动的; - )

/约翰

相关问题