无法通过javascript中的$ post在neo4j中创建索引

时间:2013-03-15 13:53:00

标签: javascript jquery neo4j

我使用neo4j REST API,JS和JQuery创建简单的Web应用程序。我可以使用$post

创建新节点
$.post("http://localhost:7474/db/data/node",
{
    "name":data[i].name,
    "phone":data[i].phone
},  
function(jsonData) {
    newlyCreated = jsonData.self;
},
'json');

可行,新节点已创建并显示在db。

不幸的是,当我尝试使用$post创建索引时,此语法不起作用:

$.post("http://localhost:7474/db/data/index/node",{"name":"phone"},function(indexInfo) {
        console.log(indexInfo);
}, 'json');

当我尝试使用neo4j http console:

POST http://localhost:7474/db/data/index/node/ {"name": "phone"}

工作正常,索引已创建。

有关$.post在这种情况下无效的原因的任何建议吗?

1 个答案:

答案 0 :(得分:0)

通过JavaScript直接向Neo4j发送请求是禁止的。可能它因为Cross Origin而无法工作(No' Access-Control-Allow-Origin'标题出现在请求的资源上。因此不允许来源' xxyy'访问)。

通常Neo4j在端口7474上运行,因此如果您从端口80(默认的http端口)执行请求,则不允许。此外,如果您从同一端口发出请求(如浏览器那样,您还需要在Neo4j配置中添加身份验证)

安全风险是,如果您直接向浏览器请求安全的Neo4j,则在浏览器中保存用户名和密码将允许任何人直接访问您的Neo4j实例。

所以最好的方法是创建一个代理(带有Allow Origin配置),验证请求以及它是否是有效的,验证并将其发送到数据库,并返回所需的浏览器请求数据。 :)