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在这种情况下不能正常工作?

4

1 回答 1

0

禁止通过 JavaScript 直接向 Neo4j 发送请求。可能由于跨源而无法正常工作(请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,不允许访问源“xxyy”)。

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

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

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

于 2015-10-17T12:21:04.757 回答