Wenn wir eine Verbindung zu einem MarkLogic-REST-Endpunkt mithilfe einer AJAX-Anforderung von einem anderen Host oder Port herstellen möchten, habe ich Recht, dass MarkLogic das Hinzufügen von Headern zu den integrierten REST-Endpunkten nicht gestattet, um CORS zu vermeiden Problem?MarkLogic CORS-Header
Ich glaube, ich kann dieses Problem umgehen, indem sie ein XQuery-Skript und diese verbindet - und das Hinzufügen der folgenden an den XQuery-Skript:
xdmp:add-response-header("Access-Control-Allow-Origin", "*");
xdmp:add-response-header("Access-Control-Allow-Headers", "origin, x-requested-with, content-type");
So zum Beispiel Anstatt eine Verbindung zum Endpunkt "v1/documents? uri =" herzustellen, konnte ich mich einfach mit einem Skript "documents.xqy? uri =" verbinden, das die gleiche Funktionalität bietet. Gibt es einen Nachteil für diesen Ansatz? Gibt es einen besseren Weg, damit umzugehen?
Ich stelle fest, dass eine weitere Option in der Vergangenheit gegeben hat einen Reverse-Proxy zu verwenden, aber ich nehme an, dies ist un-nötig der Ansatz oben gegeben?
Danke!
ich zweiten Dave Behauptung. Zu zitieren seine feinen Artikel (verknüpfen in seiner Antwort), die ausführlicher mit dem Thema befaßt: „Der Marklogic-REST-API mit einer dreischichtigen Architektur im Verstand errichtet wurde, wo die mittlere Ebene der Geschäftslogik gilt, um sicherzustellen, dass nur korrekte Anfragen durchkommen zu die REST-API. " Setzen Sie nur Geschäftslogik-definierte Endpunkte in öffentlichen Netzwerken und nicht die granularen und leistungsstarken REST-API-Endpunkte zur Verfügung. –
Danke! Dies ist für die Verwendung in einem privaten Netzwerk mit LDAP-Authentifizierung mit Marklogic. Sind die in Daves Artikel dargestellten Bedenken in diesem Anwendungsfall weniger bedenklich? Auch weiß ich, eine Option um die CORS Ausgabe zu erhalten, ist das REST-API zu erweitern, so dass die entsprechenden Header hinzugefügt werden können. Der Ansatz, den wir verwenden, ist, wie bereits erwähnt, die Verbindung mit xquery-Skripten und das Hinzufügen der Header dort. Besteht ein Nachteil darin, die REST-API zu erweitern, oder hängt dies nur vom Anwendungsfall ab? – Robert
Die Verwendung in einem privaten Netzwerk verringert die Anzahl der Personen, die versuchen könnten, über ihre Berechtigung hinaus zu handeln, ändert jedoch nicht das Problem selbst. Wenn Sie sich für eine App mit zwei Ebenen (eine vollkommen vernünftige Architektur) engagieren, sollten Sie Ihre eigenen Endpunkte rollen, um eine genaue Kontrolle darüber zu erhalten, was Personen tun können. –