Если мы хотим подключиться к конечной точке REST MarkLogic с использованием запроса AJAX с другого хоста или порта, могу ли я правильно подумать, что MarkLogic не позволяет добавлять заголовки во встроенные конечные точки REST, чтобы избежать CORS вопрос?MarkLogic Заголовки CORS
Я считаю, что могу обойти эту проблему с помощью сценария XQUERY и подключения к этому - и добавить следующее в XQUERY сценария:
xdmp:add-response-header("Access-Control-Allow-Origin", "*");
xdmp:add-response-header("Access-Control-Allow-Headers", "origin, x-requested-with, content-type");
Так, например, вместо того, чтобы подключиться к конечной точке «v1/documents? uri =», я мог просто подключиться к скрипту «documents.xqy? uri =», который предоставил те же функции. Есть ли недостаток в этом подходе? Есть ли лучший способ справиться с этим?
Я заметил, что другой вариант, данный в прошлом, заключался в использовании обратного прокси-сервера, но я предполагаю, что это не необходимо, учитывая подход выше?
Спасибо!
I второе утверждение Дейва. Процитировав свою замечательную статью (связанную в своем ответе), более полно обращается к теме: «API-интерфейс MarkLogic REST был построен с учетом трехуровневой архитектуры, где этот средний уровень применяет бизнес-логику, чтобы гарантировать, что только правильные запросы пройдут REST API. " Выставлять только конечные точки, определяемые бизнес-логикой, в общедоступных сетях, а не в гранулярные и мощные конечные точки API REST. –
Спасибо! Это предназначено для использования в частной сети с использованием аутентификации LDAP с помощью Marklogic. Являются ли проблемы, изложенные в статье Дэйва, менее опасными, учитывая этот случай использования? Кроме того, я знаю, что один вариант решения проблемы CORS заключается в расширении API REST, чтобы можно было добавить соответствующие заголовки. Подход, который мы используем, как обсуждалось, заключается в подключении к скриптам xquery и добавлении заголовков. Есть ли недостаток, заключающийся в том, чтобы сделать это над расширением REST API или просто зависит от варианта использования? – Robert
Использование в частной сети уменьшает количество людей, которые могут пытаться действовать вне их полномочий, но не изменяет сама проблема. Если вы привержены двухуровневому приложению (совершенно разумной архитектуре), совет должен сворачивать ваши собственные конечные точки, чтобы обеспечить мелкомасштабный контроль над тем, что люди могут делать. –