【问题标题】:Cross Domain GET with Marklogic server side js app使用 Marklogic 服务器端 js 应用程序进行跨域 GET
【发布时间】:2017-10-22 16:19:23
【问题描述】:

这里有很多涉及跨域请求、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。我在端口 8004 上设置了一个 http 应用程序服务器。我还有一个在端口 8010 上运行的 python SimpleHTTPServer。我有一个带有 js 脚本的简单 html 站点,其中包括以下简单的 GET 请求

$("#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,所以我宁愿不必重新开始。

【问题讨论】:

  • “MarkLogic 文档中可能有一些关于此的内容,但我在其中浪费了几个小时,而且很难导航。” -- 如果你有具体的反馈,我很乐意从你那里得到。请随时通过 community-requests@marklogic.com 与我们联系。

标签: javascript cross-domain marklogic serverside-javascript


【解决方案1】:

好吧,对不起,如果我浪费了任何时间。原来这些标题起到了作用,我只是没有放 真的

用引号括起来。

【讨论】:

  • 很高兴看到你想通了。当 Stack Overflow 允许您时,请将其标记为“已接受”,以便明确它已解决。
猜你喜欢
  • 2019-05-26
  • 1970-01-01
  • 1970-01-01
  • 2011-02-12
  • 1970-01-01
  • 1970-01-01
  • 2016-10-12
  • 1970-01-01
  • 2011-12-03
相关资源
最近更新 更多