2

Il y a beaucoup de questions ici impliquant des demandes interdomaines, CORS, en-têtes, etc. J'ai essayé presque tout ce que je peux trouver mais en vain. Il peut y avoir quelque chose dans la documentation de MarkLogic à ce sujet, mais j'ai perdu des heures et il est très difficile de naviguer. Il n'y a pas non plus d'exemples MarkLogic à suivre (que j'ai pu trouver).Cross Domain GET avec l'application js côté serveur 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. 

Je vais essayer d'inclure toutes les informations pertinentes, mais dites-moi si je manque quelque chose. Je cours Mac OS X sur Safari avec MarkLogic 9 installé. J'ai un serveur d'applications http configurer l'hébergement sur le port 8004. J'ai aussi un python SimpleHTTPServer en cours d'exécution sur le port 8010. J'ai un simple site html avec un script js qui comprend la requête GET simple suivante

$("#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); 
    }) 
});` 

Mon serveur Le script latéral, my-js.sjs, est juste une requête simple. J'ai inclus ce que je pensais être les en-têtes nécessaires pour permettre les demandes inter-domaines, mais cela ne fonctionne toujours pas.

//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(); 

Je n'ai aucune idée d'où aller. Ma mise en œuvre dépend de la possibilité d'effectuer des requêtes inter-domaines. J'ai été capable de le faire avec node.js et un serveur REST, mais je ne peux pas comprendre comment le faire avec JavaScript côté serveur, ce qui est beaucoup plus rapide pour mes fins.

Je suis également ouvert à de nouvelles idées de mise en œuvre, mais j'ai déjà écrit beaucoup de JavaScript côté serveur, donc je préférerais ne pas avoir à recommencer.

+1

"Il peut y avoir quelque chose dans la documentation de MarkLogic à ce sujet, mais j'ai perdu des heures et il est très difficile de naviguer." - Si vous avez des commentaires spécifiques, j'aimerais l'obtenir de vous. N'hésitez pas à nous contacter à [email protected] –

Répondre

1

Eh bien, désolé si j'ai perdu du temps. Il s'avère que ces en-têtes ont fait l'affaire, je n'ai pas mis vrai

entre guillemets.

+1

Bon à voir, vous l'avez compris. Lorsque Stack Overflow vous le permet, veuillez le marquer comme "Accepté" afin qu'il soit clair qu'il a été résolu. –