Javascript HTTP GET请求到KDB+;使用AngularJS处理
我正在使用AngularJS开发一个web应用程序,我对这个应用程序非常缺乏经验 我的目标是让用户在文本字段中键入一些参数,然后使用该参数作为GET请求中的参数之一发送GET请求(在Angular中使用$http服务) 请求的目标是KDB+进程(KX Systems提供的一种专有的面向列的数据库/语言)。此过程可以以以下形式接受请求:Javascript HTTP GET请求到KDB+;使用AngularJS处理,javascript,web-applications,angularjs,kdb,Javascript,Web Applications,Angularjs,Kdb,我正在使用AngularJS开发一个web应用程序,我对这个应用程序非常缺乏经验 我的目标是让用户在文本字段中键入一些参数,然后使用该参数作为GET请求中的参数之一发送GET请求(在Angular中使用$http服务) 请求的目标是KDB+进程(KX Systems提供的一种专有的面向列的数据库/语言)。此过程可以以以下形式接受请求: http://servername:1234/?queryToRunHere[paramFromApp] 此调用应返回一个JSON字符串。由于Web服务器和此进
http://servername:1234/?queryToRunHere[paramFromApp]
此调用应返回一个JSON字符串。由于Web服务器和此进程在不同的端口上运行,因此出现了“Access Control Allow Origin”错误,该错误阻止我将此查询运行到其他端口。我尝试使用$http.jsonp命令(因为我读到它允许远程抓取),但是这要求我提供一个“&callback”参数。这是不可能的,因为KDB+会将“?”右侧的所有内容解释为内部查询
我不确定如何进行,但到目前为止,我的想法如下:
如果有任何帮助,我将不胜感激。该错误通常只由不同的服务器引起,为了防止跨站点脚本,通常的解决方法是在apache配置中添加头。确保引用的两个服务具有相同的主机名 或者,如果您愿意,可以定制KDB+响应,但如果您的新用户使用q,则可能会很棘手
希望这些为您的问题提供了解决方法。由于浏览器中内置了相同的源代码策略,您将遇到
访问控制允许源代码
错误。默认情况下,当JavaScript和服务器API不是来自同一个Server:port
时,会出现此错误。要解决这个问题,您需要在服务器HTTP响应的头中指定访问控制允许来源
要在KDB/Q中完成此操作,请执行以下操作:
.z.ph:{ "\r\n" sv ("HTTP/1.1 200 OK"; "Access-Control-Allow-Origin: *";
"Content-Type: application/json"; ""; (.j.j select from aTable)) }
谢谢你的建议!我使用Q已经有相当一段时间了,不过我承认我还没有深入研究web内容的处理函数。我将很快升级到3.0,因此第2个解决方案可能成为可能。