AngularJS连接到MarkLogic

时间:2015-03-25 15:47:11

标签: angularjs marklogic

从AngularJS连接到MarkLogic时,我面临以下问题

XMLHttpRequest cannot load http://127.0.0.1:8000/. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost.:7080' is therefore not allowed access. The response had HTTP status code 401.

用于连接的代码如下

var data1=$scope.user;
alert(data1.eMail);
$http({
    type: 'POST',
    url: 'http://127.0.0.1:8000/',
    data: data1,
    format: 'json'
}).success(function () {
     alert('Successfully Added In DB');
});

这里data1是我的json对象,其中包含用户输入的信息

url1是我的marklogic服务器路径,我正在尝试从我的应用http://localhost:7080/连接

我甚至经历过https://github.com/marklogic/slush-marklogic-node这样的几个网站,但由于代码复杂性,我无法清楚地理解。 任何人都可以帮助我简单地从AngularJS连接到MarkLogic,或者在修改我上面编写的代码时纠正我。

我添加了

xdmp.addResponseHeader(“Access-Control-Allow-Origin”,“*”);也在我的MarkLogic中。

2 个答案:

答案 0 :(得分:1)

您似乎正面临跨境问题。 这应该在后端部分通过添加cors标头来解决,以允许(或不允许)来自客户端的请求。

例如,此标题:Access-Control-Allow-Origin:* 会允许任何请求。通常你只想允许已知的客户端/ ips

这必须在MarkLogic中完成(我不知道)......

答案 1 :(得分:0)

使用MarkLogic的REST API解决您的CORS问题有几个选择:

创建一个瘦的中间层。 Slush是3层架构的可靠参考,它使用Node.js作为薄中间层。 Samplestack是3层解决方案的另一个例子。

将您的客户端资产托管在与REST API服务器相同的模块数据库中。使用这种2层方法,您的HTTP应用服务器使用相同的端口分配,因此没有跨源问题。有关详细信息,请参阅@ davecassel的回答here

目前,您无法向内置端点添加响应标头,您必须创建自定义资源扩展。

要使用内置函数,您可以使用透明的反向代理来重新路由Apache的请求。请参阅@ mblakele对此的回答here

有关详细信息,您可以使用标记搜索SO,因为还有其他与CORS相关的Q& A.