【发布时间】:2015-06-11 06:12:47
【问题描述】:
我正在开发一个使用 Domino 作为后端的 AngularJS 应用程序。由于我需要比 Domino 访问服务 (DAS) 提供的更多自定义选项,因此我的下一个选择是扩展库中的 REST 服务。
该应用程序在与 Domino 不同的域上运行,因此我需要添加 CORS 标头以使该方案正常工作。使用 CORS,浏览器(对于某些请求)首先向服务器发出预检 HTTP OPTIONS 请求,以检查允许的方法(更多关于 CORS 的信息:http://www.html5rocks.com/en/tutorials/cors/)。
我现在遇到的问题是 Domino 在该 OPTIONS 请求上抛出了 Method Not Allowed 错误(响应代码 405)。我已经将它添加到我的网站文档中的允许方法列表中(尽管我不确定 REST 服务是否会遵守这一点)。请求可以通过 DAS 顺利完成。
查看扩展库中RestDocumentJsonService 的source code 似乎根本不支持OPTIONS 方法。
对如何进行这项工作有任何想法吗?还是寻求解决方法?我知道我可以编写自己的 servlet 或在 Domino 前面安装代理,但我不想走那条路(还 ;-)
【问题讨论】:
-
您是否尝试将 POST 请求的内容类型覆盖为“application/x-www-form-urlencoded”、“multipart/form-data”或“text/plain”?这可以防止浏览器发送预检请求。
-
这不起作用(对于
xe:restService组件):它会抛出一个错误,指出 Content-Type 必须是application/json(对于 POST 请求,以及 PUT 和 PATCH) . -
如果你真的想在 RestDocumentJsonService 中添加 OPTIONS 方法,你可以扩展它,只覆盖你需要的东西,然后在扩展库的 Rest Service 中将它用作自定义服务
-
我会稍微探索一下。这确实意味着我不能简单地使用可配置的 REST 服务之一,设置(例如)正确的视图并完成:(
标签: xpages lotus-domino xpages-extlib