Cross Domain GET с JS-приложением Marklogic на стороне сервера

Здесь много вопросов, связанных с междоменными запросами, 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.

Я постараюсь включить всю необходимую информацию, но скажите мне, если я что-то пропущу.

Я использую Mac OS X в Safari с установленным MarkLogic 9. У меня есть http-сервер приложений, настроенный на порт 8004. У меня также есть Python SimpleHTTPServer, работающий на порту 8010. У меня есть простой html-сайт с js-скриптом, который включает следующий простой запрос 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, поэтому я бы предпочел не начинать все сначала.


person Alec Daling    schedule 22.05.2017    source источник
comment
В документации MarkLogic может быть что-то по этому поводу, но я потратил на это несколько часов, и в ней очень сложно ориентироваться. -- если у вас есть конкретные отзывы, я хотел бы получить их от вас. Не стесняйтесь обращаться по адресу [email protected].   -  person Dave Cassel    schedule 24.05.2017


Ответы (1)


Что ж, извините, если зря потратил время. Оказывается, эти заголовки сделали свое дело, я просто не вставил true

в кавычках.

person Alec Daling    schedule 22.05.2017
comment
Приятно видеть, что ты это понял. Когда Stack Overflow позволит вам, отметьте это как «Принято», чтобы было ясно, что проблема решена. - person Dave Cassel; 23.05.2017