2013-03-15 60 views
1

我使用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'); 

它的工作原理,新的节点被创建并显示在分贝。

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

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

当我尝试使用的Neo4j HTTP控制台:

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

它工作正常创建索引。

任何建议为什么$.post在这种情况下无法正常工作?

+0

如果你可以卷曲它,这应该是一个JavaScript问题。 – 2013-03-19 13:34:44

+0

你回来了什么错误? – 2013-04-11 06:58:32

+0

CURL没有JavaScript允许的原始限制,所以可能是这个问题:) – Eek 2015-10-17 12:21:43

回答

0

通过JavaScript直接发送请求到Neo4j是一个不容否认的问题。可能由于Cross Origin的原因,它不起作用(No'Access-Control-Allow-Origin'头部存在于请求的资源中,因此Origin'xxyy'不允许访问)。

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

安全风险是,如果您确实从浏览器直接请求安全的Neo4j,在浏览器中保存用户名和密码可以让任何人直接访问你的Neo4j实例。

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