跨域GET与Marklogic服务器端js应用程序

时间:2017-05-22 21:36:20

标签: javascript cors cross-domain marklogic serverside-javascript

这里有很多问题涉及跨域请求,CORS,标题等。我几乎尝试了所有我能找到但却无济于事的东西。 MarkLogic文档中可能有关于此的内容,但我在那里浪费了几个小时并且很难导航。也没有任何MarkLogic示例可以遵循(我已经能够找到)。

[Error] Origin http://localhost:8010 is not allowed by Access-Control- Allow-Origin.
[Error] Failed to load resource: Origin http://localhost:8010 is not allowed by Access-Control-Allow-Origin. (my-js.sjs, line 0)
[Error] XMLHttpRequest cannot load http://localhost:8004/my-js.sjs due to access control checks.

我会尝试包含所有相关信息,但请告诉我是否遗漏了任何内容。

我在安装了MarkLogic 9的Safari上运行Mac OS X.我有一个http应用服务器设置托管端口8004.我还有一个在端口8010上运行的python SimpleHTTPServer。我有一个简单的html站点,其中包含以下简单的GET请求的js脚本

$("#http-button").click(function(){
    console.log("clicked");
    $.get("http://localhost:8004/my-js.sjs",function(data,status){
        alert("Data: " + data + "\nStatus" + status);
        $("#http-results").text(data);
    })
});`

我的服务器端脚本my-js.sjs只是一个简单的查询。我已经包含了我认为是允许跨域请求的必要标题,但它仍然不起作用。

//xdmp.setResponseContentType("text/plain");
xdmp.setResponseContentType("application/json");
xdmp.addResponseHeader('Access-Control-Allow-Origin', '*');
xdmp.addResponseHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE');
xdmp.addResponseHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type');
xdmp.addResponseHeader('Access-Control-Allow-Credentials', true);

var jsearch = require('/MarkLogic/jsearch.sjs');
//query and print
jsearch.documents()
  .where(
  cts.wordQuery("cardiac")
  ).slice(0,3).result();

我不知道从哪里开始。我的实现依赖于能够执行跨域请求。我能够使用node.js和REST服务器来完成它,但我无法弄清楚如何使用服务器端JavaScript,这对我的目的来说更快。

我也对新的实现想法持开放态度,但我已经编写了很多服务器端JavaScript,所以我不想重新开始。

1 个答案:

答案 0 :(得分:1)

好吧,对不起,如果我浪费了。原来这些标题做了伎俩,我只是没有     真

引号。