2017-09-15 2 views
0

Je fais un REST Java API et une application frontale avec JS pur (oui, pas de framework), quand j'accède par le même domaine, mon application fonctionne parfaitement, mais quand j'essaye d'accéder par un autre domaine je ne peux pas.Je ne peux pas accéder à mon API de l'autre domaine

Mon filtre dans l'application java est comme ceci:

after((req, resp) -> { 
     resp.header("Access-Control-Allow-Headers", "Access-Control-Allow-Origin, Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With"); 
     resp.header("Access-Control-Allow-Methods", "GET,PUT,DELETE,POST,OPTIONS"); 
     resp.header("Content-Encondig", "gzip"); 
     resp.header("Access-Control-Allow-Origin", "*"); 
     resp.type("application/json"); 
    }); 

Et ma demande JS est comme ceci:

static get(startDate,endDate){ 
    return fetch(`http://localhost:4567/api/schedule/${startDate}/${endDate}`,{ 
     mode : "cors", 
    }) 
    .then(result => result.json()) 
    .catch(error => erroe) 
} 

Important: si j'accède par un autre domaine, mais directement sur le navigateur , J'obtiens le JSON parfaitement Backend:java Spark frameWork

+1

Quelles sont les erreurs obtenez-vous où? Que se passe-t-il sur la fin Spark? Enregistrez-vous les demandes? Lesquels viennent? Jetez un coup d'œil à [demander]. Cela pourrait également avoir plus de sens en tant que filtre avant. – pvg

+0

Vous pouvez également implémenter ce qu'ils font dans leur propre tutoriel. https://sparktutorials.github.io/2016/05/01/cors.html (bien que le filtre avant fonctionne aussi bien) – pvg

Répondre

0

J'ai résolu mon problème, dans mon application JS j'ai appelé la demande pour http://localhost:4567/api, puis quand j'accédais à l'application par un autre domaine, l'application appelait la demande de self, donc la solution était changer localhost par l'adresse IP de l'application.