05-30-2017 10:32 AM
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 !
06-01-2017 11:35 AM
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 !
05-31-2017 05:29 AM
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.
05-31-2017 05:49 AM
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
05-31-2017 06:06 AM
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.
05-31-2017 09:24 AM
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 ?
05-31-2017 09:52 AM
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 ?
05-31-2017 09:51 AM
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.
05-31-2017 09:58 AM
En effet, j'utilise des projets Maven. Dois-je ajouter cette dépendance dans le pom.xml ?
05-31-2017 10:00 AM
Oui sur le projet gérant votre module pour le repository (platform).
Y.
05-31-2017 10:22 AM
J'obtiens les mêmes erreurs après ajout de ces dépendances...
Tags
Find what you came for
We want to make your experience in Hyland Connect as valuable as possible, so we put together some helpful links.