从另一个localhost访问markLogic

我正在尝试使用markLogic作为文档存储库,并编写一个可以从我的localhost(Apache)访问它的客户端…

在markLogic中,我创建了一个新的REST服务器(8011),现在我想从客户端访问一个带有(希望很简单的)HTTP请求的markLogic数据库(实际上使用jQuery $ .ajax)。 然而,CORS问题的问题仍然是丑陋(呃)。 在研究了stackoverflow之后,我修改了$ .ajax以包含语句:“crossDomain:true” – 但这还不够。

我是否需要以任何方式修改我的localhost(Apache)?

可能需要将响应服务器(markLogic localhost:8011)修改为:“Access-Control-Allow-Headers:*。” ?

这该怎么做? 似乎命令应该是markLogic:“xdmp:add-response-header(”meta“,”description“)” – 但是,在哪里,以什么forms? 这是参数还是pgm语句?

这似乎是一个常见的问题,因为我碰到了这种性质的几个问题 – 但没有答案。

通常的做法是做两件事之一:

  1. 使用双层体系结构,除了提供数据的REST端点之外,MarkLogic还承载JavaScript / HTML / CSS /等。
  2. 使用三层体系结构,客户端(浏览器)将其请求发送到中间层,中间层将请求转发给MarkLogic。

这两种方法都是合法的。 您可以查看Samplestack以获取三层方法的示例。 当前实现提供Java中间层; 在不太遥远的未来,应该有一个Node.js中间层选项。 slush-marklogic-node生成器还设置了一个三层方法,Node.js作为中间层(这个方法不如Samplestack精确,但很容易上手)。

由于问题提到了apache,也许通过该前端Web服务器透明地反向代理MarkLogic请求可能是最容易的。 就浏览器而言,它应该看起来像一个主机和端口。

http://httpd.apache.org/docs/2.2/mod/mod_proxy.html有完整的文档,但我认为它可以简单到:

ProxyPassReverse /ml8011/ http://localhost:8011/