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');

それが機能し、新しいノードが作成され、dbに表示されます。

残念ながら、を使用してインデックスを作成しようとすると$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 に答える