2013-03-15 42 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配置),驗證請求是否有效,並驗證並將其發送到數據庫,然後返回瀏覽器請求所需的數據。 :)