从另一个localhost访问markLogic

时间:2015-02-12 23:36:27

标签: jquery ajax xmlhttprequest 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")" - 但是,在哪里,以什么形式?这是参数还是pgm语句?

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

2 个答案:

答案 0 :(得分:4)

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

  1. 使用双层架构,除了提供数据的REST端点之外,MarkLogic还托管JavaScript / HTML / CSS /等。
  2. 使用三层架构,客户端(浏览器)将其请求发送到中间层,中间层将请求转发给MarkLogic。
  3. 任何一种方法都是合法的。您可以查看Samplestack以获取三层方法的示例。当前实现提供Java中间层;在不太遥远的未来,应该有一个Node.js中间层选项。 slush-marklogic-node generator也建立了一个三层方法,Node.js作为中间层(这个方法不如Samplestack好,但是很容易上手)。

答案 1 :(得分:4)

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

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

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