2

私は AngularJS を使用して Web アプリに取り組んでいますが、これはまったく経験がありません。

私の目的は、ユーザーにいくつかのパラメーターをテキスト フィールドに入力させ、GET 要求のパラメーターの 1 つとしてそのパラメーターを使用して (Angular の $http サービスを使用して) GET 要求を送信することです。

リクエストのターゲットは、KDB+ プロセス (KX Systems の独自の列指向データベース/言語) です。このプロセスは、次の形式でリクエストを受け取ることができます。

http://servername:1234/?queryToRunHere[paramFromApp]

この呼び出しは JSON 文字列を返す必要があります。Web サーバーとこのプロセスが異なるポートで実行されているため、このクエリを別のポートで実行できないという「Access-Control-Allow-Origin」エラーが発生します。$http.jsonp コマンドを使用しようとしましたが (これを読んでリモート フェッチが可能になるため)、「&callback」パラメーターを指定するよう求められます。KDB+ は "?" の右側のすべてを解釈するため、これは不可能です。内部クエリとして。

どのように進めるかはよくわかりませんが、これまでのところ私の考えは次のとおりです。

  1. KDB+ は Java 用の API を提供します (ただし、JavaScript については私が知る限りではありません)。おそらく、Java である種の Web サービスを記述し、それを angular で呼び出すことができ、そのネイティブ API を使用して KDB+ を呼び出すことができます。これに関する問題は、維持する別のプログラムが作成されることです。また、そのようなサービスを作成する方法がわかりません (どのようなテクノロジ、フレームワークなど)。

  2. 私が知らない Angular 内の別の方法、または $http.jsonp でコールバック パラメータを指定する必要がない方法があります。

どんな助けにも感謝します。

4

2 に答える 2

2

このエラーは通常、異なるサーバーによってのみ発生します。クロスサイト スクリプティングを防ぐために、通常の回避策は、Apache 構成にヘッダーを追加することです。両方のサービスが同じホスト名で参照されていることを確認してください。

または、必要に応じて KDB+ 応答をカスタマイズすることもできますが、q を初めて使用する場合は難しいかもしれません。

  1. .z.phは、KDB の HTTP リクエストの処理を制御するものです。これを上書きして、任意のパラメーターを処理し、必要なものを返すことができます。例はKX wikiで見ることができます。

  2. KDB+ 3.0 以降では、より便利な Web ソケットも提供されます。それらは.z.wsによって処理されます。

JavaScript での使用例は、Carlos Butlers のWebStudioで見ることができます。

うまくいけば、これらが問題の回避策を提供してくれました。

于 2013-01-19T12:28:30.033 に答える