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