从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中。
答案 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。
有关详细信息,您可以使用marklogic标记搜索SO,因为还有其他与CORS相关的Q& A.