3

私は REST API を初めて使用します**(これは本当に REST の問題ですか?)**

Cypher を使用して neo4js からすべてのノードを取得したい

START n = node(*)
return n;

jquery ajax POST または GET メソッドを使用する場合の使用方法

ドキュメントでそれをお勧めします

POST http://localhost:7474/db/data/cypher
Accept: application/json
Content-Type: application/json

私のコードで私は書く

 $.ajax({
      type:"POST",
      url: "http://localhost:7474/db/data/cypher",
      accepts: "application/json",
      dataType:"json",
      contentType:"application/json",
      data:{
             "query" : "start n  = node(*) return n",
             "params" : {}
           },
      success: function(data, textStatus, jqXHR){
                      alert(textStatus);
                        },
      error:function(jqXHR, textStatus, errorThrown){
                       alert(textStatus);
                        }
             });//end of placelist ajax  

私の問題は何ですか?エラーアラートは以下です
ここに画像の説明を入力

4

1 に答える 1

8

どのようなエラーが発生するかはわかりませんが、まったく同じコードを実行すると、次のエラーが発生します。

XMLHttpRequest cannot load http://127.0.0.1:7474/db/data/cypher.
Origin http://127.0.0.1:3000 is not allowed by Access-Control-Allow-Origin.

したがって、これがあなたが経験しているエラーであると想定しています。

クロスドメイン Ajax 呼び出しを実行する場合、次の 2 つのオプションがあります。

  1. Neo4J がサポートしていないJSONP 。

  2. クロスオリジン リソース共有 (CORS)。「CORS の背後にある基本的な考え方は、カスタム HTTP ヘッダーを使用して、ブラウザーとサーバーの両方が互いを十分に認識して、要求または応答が成功するか失敗するかを判断できるようにすることです」 .

POST ( preflight request ) の前に送信された OPTIONS リクエストは、Neo4J REST サーバーから次のヘッダーを返します。

Access-Control-Allow-Origin:*
Allow:OPTIONS,POST
Server:Jetty(6.1.25)

ここには重要なヘッダー、つまりヘッダーがありませんContent-Type。これは、このヘッダーが POST 要求で送信されると、POST 要求が失敗することを意味します。これは、まさに $.ajax() 呼び出しで起こっていることです。

次の行を削除すると、POST は成功します

contentType:"application/json",

あなたの$.ajax()電話から。

これにより、jQuery が Content-Type ヘッダーを送信できなくなります。

于 2013-01-03T21:32:47.970 に答える