不允许数据库上下文

问题描述

我们有一个包含 3 个服务器的集群,前面有负载均衡器 (CloudFlare)。当集群中有 2 台服务器(A 和 B)时,一切运行良好,但在添加第三台服务器 (C) 后,我们注意到一些奇怪的事情。

其中一个非常重要,我完全不明白它是如何发生的。

我们的 Web 应用程序向自身发出 AJAX 请求以获取一些 JSON 数据,如果请求命中新服务器 (C),响应如下所示:

{
code: 404,text: "Not Found",message: "Database context not allowed."
}

我们的应用程序没有抛出这样的错误,所以我在谷歌搜索了一下,注意到它在:OpenNTF XPagesExtensionLibrary

但是,我们根本不使用 XPage,所以我想知道我们的 AJAX 请求怎么会以某种方式涉及该逻辑。

任何建议和提示将不胜感激。

更新

我的代理的后端代码并不重要(它也可能是一个空代理,我检查过),因为请求没有到达我的代理。

AJAX 调用由 jQuery 触发

let url = "domain.tld/api/key";
let params = {"a": 1};
$.post(url,params,function (data) {
  // some code
},"json"
).always(function() {
  // some code
});

我怀疑是一个问题的 URL 以 /api/key 开头,我相信这是一个问题(因为所有其他 ajax 调用的端点都不是从 /api/ 开始的)。

谢谢。

解决方法

我们在评论的帮助下(你可以在我的原始帖子下看到)。

显然有 DAS servlet 可以处理从 /api/* 开始的所有请求,并且在加载 XPage 引擎时运行。 就我而言,3 台服务器中有 2 台关闭了 XPage,因此问题仅发生在 1 台服务器上。

解决方案是:

  1. 关闭 XPage(或找到关闭 DAS 的方法)。
  2. 或者将 URL 从 /api/path 更改为其他内容(这是我们要做的)。