Cross-Domain Requests JSONP vs CORS
Proprio poco fa mi sono imbattuto (facendo un test) in un caso in cui non posso fare un POST JSON con jQuery a causa di una Cross-Domain Requests.
Avevo gia avuto in precedenza questo problema con le richieste cross-domain JSON con jQuery ma utilizzanto JSONP avevo risolto questo tipo di problema.
Apprendo solo ora che non e' possibile usare la stessa tecnica per i POST in quanto JSONP va bene solo per gli http GET, esiste invece Cross-origin resource sharing (CORS):
http://en.wikipedia.org/wiki/Cross-Origin_Resource_Sharing
Ho trovato che Apache CXF e' possibile annotare direttamente la classe con @CrossOriginResourceSharing
http://cxf.apache.org/docs/jax-rs-cors.html
Al momento con JAX-RS non sono ancora riuscito a superare il problema.
Per applicare gli header necessari con JAX-RS ho scritto questo filtro:
https://github.com/mattocchi/WebAppCommon/blob/master/src/it/attocchi/rest/RestAccessControlFilter.java
Quando l'applicazione e' dentro PhoneGap nessun problema, il problema si presenta solo testando direttamente via Browser (nel caso di Chrome si può usare chrome --disable-web-security )
Avevo gia avuto in precedenza questo problema con le richieste cross-domain JSON con jQuery ma utilizzanto JSONP avevo risolto questo tipo di problema.
Apprendo solo ora che non e' possibile usare la stessa tecnica per i POST in quanto JSONP va bene solo per gli http GET, esiste invece Cross-origin resource sharing (CORS):
http://en.wikipedia.org/wiki/Cross-Origin_Resource_Sharing
Ho trovato che Apache CXF e' possibile annotare direttamente la classe con @CrossOriginResourceSharing
http://cxf.apache.org/docs/jax-rs-cors.html
Per applicare gli header necessari con JAX-RS ho scritto questo filtro:
https://github.com/mattocchi/WebAppCommon/blob/master/src/it/attocchi/rest/RestAccessControlFilter.java
Quando l'applicazione e' dentro PhoneGap nessun problema, il problema si presenta solo testando direttamente via Browser (nel caso di Chrome si può usare chrome --disable-web-security )
Commenti
Grazie Valentina