Я пытаюсь использовать markLogic в качестве репозитория документов и написать клиент, который может получить к нему доступ с моего локального хоста (Apache)...
В markLogic я создал новый сервер REST (8011), и теперь я хотел бы получить доступ к базе данных markLogic от клиента с помощью (надеюсь, простого) HTTP-запроса (на самом деле с использованием jQuery $.ajax). Однако проблема CORS поднимает свою уродливую голову. После исследования stackoverflow я изменил $.ajax, включив в него утверждение: «crossDomain: true», однако этого недостаточно.
Нужно ли каким-либо образом изменять мой локальный хост (Apache)?
Возможно, мне нужно изменить сервер ответов (markLogic localhost: 8011) на: «Access-Control-Allow-Headers: *». ?
Как это сделать? Вроде как должна быть команда markLogic: "xdmp:add-response-header("meta", "description")" - правда, где, в каком виде? Это параметр или оператор pgm?
Кажется, это обычная проблема, так как я столкнулся с несколькими вопросами такого рода, но ответов нет.
2 ответа
Обычная практика состоит в том, чтобы сделать одну из двух вещей:
- используйте двухуровневую архитектуру, в которой MarkLogic размещает JavaScript/HTML/CSS/и т. д. в дополнение к конечным точкам REST, которые будут предоставлять ваши данные.
- используйте трехуровневую архитектуру, в которой ваш клиент (браузер) отправляет свои запросы на средний уровень, который перенаправляет запрос в MarkLogic.
Любой подход правомерен. Вы можете посмотреть Samplestack для примера трехуровневого подхода. Текущая реализация обеспечивает средний уровень Java; в недалеком будущем должен появиться вариант среднего уровня Node.js. генератор slush-marklogic-node также использует трехуровневый подход с Node. js в качестве среднего уровня (это менее отполировано, чем Samplestack, но довольно просто начать работу).
Поскольку в вопросе упоминается apache, возможно, проще всего прозрачно проксировать запросы MarkLogic через этот интерфейсный веб-сервер. Что касается браузера, это должно выглядеть как один хост и порт.
http://httpd.apache.org/docs/2.2/mod/mod_proxy.html есть полные документы, но я думаю, что это может быть так же просто, как:
ProxyPassReverse /ml8011/ http://localhost:8011/
Похожие вопросы
Связанные вопросы
Новые вопросы
jquery
jQuery — это библиотека JavaScript. Также рассмотрите возможность добавления тега JavaScript. jQuery — это популярная кросс-браузерная библиотека JavaScript, которая упрощает обход объектной модели документа (DOM), обработку событий, анимацию и взаимодействие AJAX, сводя к минимуму расхождения между браузерами. Вопрос с тегом jQuery должен быть связан с jQuery, поэтому jQuery должен использоваться рассматриваемым кодом, и в вопросе должны быть как минимум элементы, связанные с использованием jQuery.