Bonjour,
J'aimerais parser une chaîne de caractères reçue par : http://localhost:8080/alfresco/api/-default-/public/alfresco/versions/1/people
J'ai donc écris ce code qui devrait me retourner le nom, le prénom et le mail de la première personne :
<p id="peoplelist"></p>
<script>
var people = new XMLHttpRequest();
people.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
obj = JSON.parse(this.responseText);
document.getElementById("peoplelist").innerHTML = obj.list.entries[0].entry.firstName + obj.list.entries[0].entry.lastName + "," + obj..list.entries[0].entry.email;
}
};
people.open('GET', 'http://localhost:8080/alfresco/api/-default-/public/alfresco/versions/1/people', true, 'admin', 'admin');
people.send();
</script>
Seulement je reçois une erreur basique d'authentification But this gives me a basic 401 console error about the authentification
:8080/alfresco/api/-default-/public/alfresco/versions/1/people Failed to load resource: the server responded with a status of 401 (Unauthorized)
new-page:1 XMLHttpRequest cannot load http://localhost:8080/alfresco/api/-default-/public/alfresco/versions/1/people. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:8081' is therefore not allowed access. The response had HTTP status code 401.
En outre quand je vais manuellement sur http://localhost:8080/alfresco/api/-default-/public/alfresco/versions/1/people la pop-up basique de login s'ouvre et je peux me loguer avec admin/admin normalement et récupérer le résultat attendu :
{"list":{"pagination":{"count":7,"hasMoreItems":false,"totalItems":7,"skipCount":0,"maxItems":100},"entries":[{"entry":{"lastName":"Beecher","userStatus":"Helping to design the look and feel of the new web site","jobTitle":"Graphic Designer","statusUpdatedAt":"2011-02-15T20:20:13.432+0000","mobile":"0112211001100","emailNotificationsEnabled":true,"description":"Alice is a demo user for the sample Alfresco Team site.","telephone":"0112211001100","enabled":false,"firstName":"Alice","skypeId":"abeecher","avatarId":"198500fc-1e99-4f5f-8926-248cea433366","location":"Tilbury, UK","company":{"organization":"Moresby, Garland and Wedge","address1":"200 Butterwick Street","address2":"Tilbury","address3":"UK","postcode":"ALF1 SAM1"},"id":"abeecher","email":"abeecher@example.com"}},{"entry":{"firstName":"Administrator","emailNotificationsEnabled":true,"company":{},"id":"admin","enabled":true,"email":"admin@alfresco.com"}},{"entry":{"firstName":"Alex","lastName":"lol","emailNotificationsEnabled":true,"company":{},"id":"alexandra","enabled":true,"email":"alexandra.lol@test.com"}},{"entry":{"firstName":"Guest","emailNotificationsEnabled":true,"company":{},"id":"guest","enabled":false}},{"entry":{"firstName":"Jack","lastName":"lol","emailNotificationsEnabled":true,"company":{},"id":"jack","enabled":true,"email":"jack.lol@test.com"}},{"entry":{"lastName":"Jackson","userStatus":"Working on a new web design for the corporate site","jobTitle":"Web Site Manager","statusUpdatedAt":"2011-02-15T20:13:09.649+0000","mobile":"012211331100","emailNotificationsEnabled":true,"description":"Mike is a demo user for the sample Alfresco Team site.","telephone":"012211331100","enabled":false,"firstName":"Mike","skypeId":"mjackson","avatarId":"3fbde500-298b-4e80-ae50-e65a5cbc2c4d","location":"Threepwood, UK","company":{"organization":"Green Energy","address1":"100 Cavendish Street","address2":"Threepwood","address3":"UK","postcode":"ALF1 SAM1"},"id":"mjackson","email":"mjackson@example.com"}},{"entry":{"firstName":"Nicolas","lastName":"lol","emailNotificationsEnabled":true,"company":{},"id":"nicolas","enabled":true,"email":"nicolas.lol@test.com"}}]}}
Si quelqu'un sait comment faire pour accéder à cette page avec du code ou où est-ce que je me suis tromper merci d'avance !
Solved! Go to Solution.
Mon problème ne venait pas de CORS. En effet, il s'agit d'une page custom de Share. Ainsi comme tu me l'a dit précédemment j'aurais du utiliser le proxy de Share. Mais je n'avais pas bien compris.
Donc pour appeler cette API depuis Share, j'aurais du utiliser ce lien :
http://localhost:8081/share/proxy/alfresco-api/-default-/public/alfresco/versions/1/people
Tout marche correctement maintenant !
Bonjour,
Le problème vient des réglages CORS d'Alfresco qui empêche les appels depuis d'autre domaine.
Pour désactiver cette fonctionnalité vous pouvez jeter un oeil à ce lien : ADF 101 - Getting Started with Alfresco Application Development Framework qui vous indiquera comment paramétrer votre environnement.
Y.
Bonjour,
Je ne suis pas sur ADF mais sur des projets générés avec Maven, donc un Alfresco sur le port 8080 et Share sur 8081. C'est donc sur Share que je créée une nouvelle page et que j'intègre ce code-ci. Etant donné que l'interface Share fonctionne normalement sans problème de connectivité j'avais un peu exclu ce problème de CORS même si j'y avais déjà jeté un coup d’œil. Cependant sur des projets type Alfresco-Maven est-il possible d'activer les CORS ? Car sur alfresco-ng2-components/ALFRESCOCORS.md at master · Alfresco/alfresco-ng2-components · GitHub les fichiers et dossiers ne sont pas les mêmes... Le web.xml est différent est bogue lorsque j'essaie de le modifier pour la prise en compte des CORS
En fait, peut importe que vous utilisiez ADF ou non. Votre problème n'est pas à ce niveau mais au niveau de la configuration Alfresco qui n'autorise pas les requêtes venant d'un autre domaine. Ce qui empêche votre code javascript coté client d'appeller directement Alfresco sur le port 8080.
Pour palier à cela, étant donné que vous sur Alfresco Share, Share expose un proxy vers Alfresco. Il est disponible à l'adresse http://<host>:<port>/share/proxy/alfresco
Vous pouvez sinon suivre la section 1.2.2. Enabling CORS on Alfresco ECM du lien précédent afin qu'Alfresco autorise les CORS.
Je conseillerai l'utilisation du proxy Share qui est fais pour cela.
Y.
La page http://localhost:8081/share/proxy/alfresco ne me renvoie rien (une page blanche). Et en console j'obtiens :
alfresco:1 GET http://localhost:8081/share/proxy/alfresco 401 (Unauthorized)
Navigated to http://localhost:8081/share/proxy/alfresco
Pour ce qui est d'activer CORS j'ai mis le .jar dans le repository d'Alfresco mais rien n'y fait..
Mais du coup comment l'interface de Share arrive à récupérer des données de Alfresco ? N'est-il pas censé ne pas pouvoir le faire si les CORS ne sont pas activés ?
En local l'adresse : http://localhost:8181/share/proxy/alfresco/ me permet d'accéder à la d'index des webscripts équivalent à l'url suivante : http://localhost:8181/alfresco/service/index
Il faut néanmoins être connecté (BasicAuth) afin d'accéder à cette page. Je m'aperçoit d'ailleurs que ces API ne sont pas couvert par le proxy étant mappé sur /alfresco/api. Le proxy redirige de /share/proxy/alfresco/(.*) vers /alfresco/s/(.*).
Je trouve étonnant que le jar indiqué ne fonctionnent pas. Quels versions d'Alfresco utiliser-vous ? Comment l'avez vous installer ?
Dans le cas d'un projet maven, j'avais posé la question il y'a quelque temps : Enable CORS for platform ? · Issue #432 · Alfresco/alfresco-sdk · GitHub
Il vous suffit d'ajouter les dépendances maven suivantes :
<dependency> <groupId>org.alfresco</groupId> <artifactId>enablecors</artifactId> <version>1.0</version> </dependency>
<dependency> <groupId>com.thetransactioncompany</groupId> <artifactId>cors-filter</artifactId> <version>2.5</version> </dependency>
Cela avait fonctionné sur un projet basé sur le SDK 3.0 (en beta à l'époque).
Y.
Excusez-moi, http://localhost:8081/share/proxy/alfresco me renvoie bien ce qu'on voit sur la page 8080/alfresco il fallait juste que je m'identifie sur Share. Mais du coup, que dois-je faire avec cela ?
En effet, j'utilise des projets Maven. Dois-je ajouter cette dépendance dans le pom.xml ?
Oui sur le projet gérant votre module pour le repository (platform).
Y.
J'obtiens les mêmes erreurs après ajout de ces dépendances...
Discussions about Alfresco Content Services and Alfresco Process Services in French
Related:
By using this site, you are agreeing to allow us to collect and use cookies as outlined in Alfresco’s Cookie Statement and Terms of Use (and you have a legitimate interest in Alfresco and our products, authorizing us to contact you in such methods). If you are not ok with these terms, please do not use this website.