Sto realizzando un'API JSON molto semplice in Java. In realtà è un mod di Project Zomboid che serve le coordinate dell'oggetto. Ecco come il mio gestore HTTP assomiglia:L'intestazione CORS 'Access-Control-Allow-Origin' non corrisponde ... ma lo è!
public class JSONZomboid implements HttpHandler
{
@Override
public void handle(HttpExchange t) throws IOException {
// HEADERS
Headers headers = t.getResponseHeaders();
headers.set("Content-Type", "text/json");
headers.set("Access-Control-Allow-Origin", "pzmap.crash-override.net");
t.sendResponseHeaders(200,0);
//BODY
OutputStream os = t.getResponseBody();
os.write("{\n".getBytes());
// generate JSON here
os.write("}".getBytes());
os.close();
}
}
voglio caricare questo in progetto di mappa del progetto Zomboid utilizzando userscript che significa che ho bisogno di consentire CORS per la connessione. Questo viene fatto tramite il codice semplice:
PlayerRenderer.prototype.fetchInfo = function() {
$.get("http://127.0.0.1:8000/test", {}, this.displayPoints.bind(this));
}
ma ottengo questo errore:
warning http://images.michaelsync.net/images/2007/09/warningicon.png Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://127.0.0.1:8000/test . (Reason: CORS header 'Access-Control-Allow-Origin' does not match 'pzmap.crash-override.net').
Anche nella console che può vedere chiaramente l'errore è fuorviante:
Se Non odiavo già CORS, comincerei a odiarlo ora. Puoi dirmi qual è la stringa effettiva che appartiene all'intestazione di origine del permesso?
L'intestazione deve avere il nome host del sito a cui è consentito l'accesso al contenuto. Se stai caricando le tue pagine da un sito ospitato su "pzmap.crash-override.net" allora dovrebbe funzionare. L'errore ti dice cosa contiene l'intestazione, non come era il dominio di origine. – Pointy
Puoi vedere quale sito sto caricando nelle intestazioni delle richieste ('Origin' e' Referer'). –
In realtà è molto difficile vedere i dettagli di quelle immagini su un piccolo schermo:/ – Pointy