Bonjour,

Je développe une application full JS pour apprendre Node.js et Angular.
D'un côté j'ai une appli Angular qui utilise Grunt (http://localhost:9000), de l'autre une API Node.js qui traite les données (http://localhost:8001).

Je souhaite que l'appli récupère le contenu d'un fichier JSON en faisant un appel au serveur (méthode GET) :

Soit avec le service $http :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
$http.get("http://localhost:8001/blocks")
Soit en utilisant $resource :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
.factory("Blocks", function ($resource) {
    return $resource("http://localhost:8001/blocks",{},);
});
puis :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
$scope.blocksList = Blocks.query()

Côté serveur, j'envoie les données lorsqu'on reçoit une requête GET :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
server.get('/blocks', function(req, res){
    res.sendfile('data/blocks.json');
});

Lorsque je teste la récupération des données, l'application reçoit bien une réponse avec une en-tête (statut 200), mais le corps de la requête est vide :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
Host: localhost:8001
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:28.0) Gecko/20100101 Firefox/28.0
Accept: application/json, text/plain, */*
Accept-Language: fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Referer: http://127.0.0.1:9000/
Origin: http://127.0.0.1:9000
Connection: keep-alive
Pourtant, lorsque je teste l'API via CURL, je reçoit bien les données :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
curl -i -H "Accept: application/json" -H "Content-Type: application/json" http://localhost:8001/blocks
Réponse :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
HTTP/1.1 200 OK
X-Powered-By: Express
Accept-Ranges: bytes
ETag: "498-1396003136000"
Date: Fri, 28 Mar 2014 12:05:59 GMT
Cache-Control: public, max-age=0
Last-Modified: Fri, 28 Mar 2014 10:38:56 GMT
Content-Type: application/json
Content-Length: 498
Connection: keep-alive
 
[
    {"id": 0, "title": "Default", "type": "default", "order": 1, "col": 0},
    {"id": 1, "title": "My music block 1", "type": "music", "order": 4, "col": 2},
    {"id": 2, "title": "My links block 1", "type": "links", "order": 3, "col": 1},
    {"id": 3, "title": "My default block 2", "type": "default", "order": 2, "col": 2},
    {"id": 4, "title": "My music block 2", "type": "music", "order": 0, "col": 0},
    {"id": 5, "title": "My links block 2", "type": "links", "order": 5, "col": 1}
]
Est-ce que quelqu'un sait d'où peut venir le problème ?

Merci,

Romain