Ecco alcune informazioni di base ...
- 1) http://www.html5rocks.com/en/tutorials/cors/ - Si noti che è necessario leggere il bit di "non è così semplice richiede "come JSon rientra in questa categoria.
- 2) http://stackoverflow.com/questions//cors-access-control-allow-origin-despite-correct-headers?rq=1
- 3) http://caniuse.com/# search = cors - Dettagli browser che supportano CORS
- 4) http://stackoverflow.com/questions/10748537/access-control-allow-origin-on-playframework (for Gioca 1 NON Play 2)
Quindi ecco cosa ho implementato:
Come richieste non-così-semplici (vedere 1 sopra) effettuare una chiamata pre-volo, è necessario aggiungere il seguente al file di percorsi:
POST /url_to_json_webservice controllers.myJsonWebServices.myJsonWebService
OPTIONS /url_to_json_webservice controllers.myJsonWebServices.checkPreFlight
e quindi impostare il seguente metodo nel controller:
public static Result checkPreFlight() {
response().setHeader("Access-Control-Allow-Origin", "*"); // Need to add the correct domain in here!!
response().setHeader("Access-Control-Allow-Methods", "POST"); // Only allow POST
response().setHeader("Access-Control-Max-Age", "300"); // Cache response for 5 minutes
response().setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept"); // Ensure this header is also allowed!
return ok();
}
Nota forse ho impostato più intestazioni del necessario qui, quindi si prega di controllare quali avete bisogno !!
anche ricordarsi di aggiungere il seguente alla fine del tuo metodo di controllo che restituisce il risultato in realtà JSON (come nel mio domanda di cui sopra):
public static Result myJsonWebService() {
...
response().setHeader("Access-Control-Allow-Origin", "*");
return ok(toJson(jsonObject));
}
Volevo migliorare la risposta sul tuo sito web. Ma non riesco ad accedere. – Nick
Grazie Nick, ho integrato i tuoi miglioramenti –