Non sono sicuro che il problema riguardi le tecnologie coinvolte o la mia comprensione delle tecnologie.Origine non consentita da Access-Control-Allow-Origin - come abilitare CORS utilizzando un semplice stack Web e guizzo
Ho un'applicazione html5 scritta in javascript e html ospitata su un server Apache 2.2.
Ho un'applicazione java scritta in java utilizzando jetty, guice, jackson, jersey che ospita un semplice servizio REST.
Entrambe le applicazioni vengono eseguite sulla stessa macchina, uno sulla porta 80 (pura applicazione HTML5 ospitato su Apache), l'altro su 8080 (applicazione java puro ospitato sul pontile/Guice)
Credo che la risposta è nella le intestazioni mi stanno rimandando indietro. Le intestazioni CORS indicano a un browser che si consente alle applicazioni esterne di colpire la propria API. Non riesco a capire come configurare il mio server Jetty, Guice per restituire le intestazioni CORS corrette.
Sto usando un server Jetty imbastito quindi non ho un file web.xml per aggiungere le intestazioni.
Potrebbe anche essere qualcosa a che fare con come il server di applicazioni HTML5 (in questo caso apache 2.2) sta servendo l'applicazione.
Il file httpd.conf Apache ha la voce:
LoadModule headers_module modules/mod_headers.so
<IFModule mod_headers>
Header add Access-Control-Allow-Origin "*"
Header add Access-Control-Allow-Methods: POST, GET, OPTIONS, PUT, DELETE, HEAD
Header add Access-Control-Allow-Headers: X-PINGOTHER
Header add Access-Control-Max-Age: 1728000
</IfModule>
nella mia configurazione Guice servlet Ho il seguente:
public class RestModule extends ServletModule{
@Override
protected void configureServlets() {
bind(QuestbookService.class);
// hook Jersey into Guice Servlet
bind(GuiceContainer.class);
// hook Jackson into Jersey as the POJO <-> JSON mapper
bind(JacksonJsonProvider.class).in(Scopes.SINGLETON);
Map<String, String> guiceContainerConfig = new HashMap<String, String>();
guiceContainerConfig.put(ResourceConfig.PROPERTY_RESOURCE_FILTER_FACTORIES,
HttpStatusCodeMetricResourceFilterFactory.class.getCanonicalName());
serve("/*").with(GuiceContainer.class, guiceContainerConfig);
}
}
Credo che il problema è nel mio Guice config da quando don avere un posto dove impostare le intestazioni di risposta.
Sto utilizzando un server di jetty incorporato e quindi ho pensato che la modalità di sviluppo ignorerebbe l'intero controllo, ma potrei sbagliarmi.
Grazie per qualsiasi consiglio.
possibile duplicato del [Perché vedo un ' "origine non è consentita da Access-Control-Allow-Origin" errore qui?] (http://stackoverflow.com/questions/9310112/why-am-i-seeing-an-origin-is-not-allowed-by-access-control-allow-origin-error) – Barmar
La mia domanda è lato server, l'esempio riguarda il lato client. La libreria lato client si occupa già di queste incongruenze. È un problema basato sul server. – AnthonyJClink
Aggiunto, dal momento che sto usando un server jetty integrato con guizzi. Non sono sicuro di come configurare senza web.xml ... So che è una mancanza di comprensione delle tecnologie. ma ritengo che lo stack tecnologico in questa domanda sia abbastanza diverso dal possibile duplicato che merita la sua attenzione poiché implica uno stack tecnologico molto diverso. – AnthonyJClink