sto cercando di impostare il supporto CORS in Grails, e sto usando il seguente filtro:CORS in grails - Tutte le richieste falliscono?
class CorsFilters {
def filters = {
all(controller:'*', action:'*') {
before = {
response.setHeader("Access-Control-Allow-Origin", "*")
}
}
}
}
Da test, sembra che l'header di risposta è impostata correttamente per tutte le richieste, ma quando faccio una richiesta esternamente contro localhost o qualche server disponibile a me, ottengo il seguente errore:
XMLHttpRequest cannot load http://server:8080. Origin http://jsbin.com is not allowed by Access-Control-Allow-Origin.
This live example opere nel mio caso di Chrome, quindi non so che cosa potrebbe accadere qui. Nelle richieste che non riescono, sto provando a colpire direttamente tomcat.
Cosa potrebbe accadere perché questo fallisca?
Due cose vengono in mente. 1. L'utilizzo di localhost (un dominio di primo livello) non è una buona idea; Non riesco a trovare la fonte in questo momento, ma ho avuto problemi non molto tempo fa con questo. Usa il tuo file hosts per configurare un host falso. 2. Il codice in JSBin è effettivamente quello che stai utilizzando per la richiesta? In caso contrario, alcune librerie/framework JS potrebbero inviare prima una richiesta OPTIONS (pre-flight), che è necessario rispondere in modo appropriato. Conferma se questo è il caso e posso fornire una risposta, ho già sviluppato una soluzione in Grails. In bocca al lupo! – Esteban