Devo implementare il supporto CORS nel server REST basato su Jersey. Ho esaminato alcuni dei dati disponibili material e informativo tutorials. Ho trovato due approcci la gente sta usando:CORS Implementazione lato server Java
Approccio-1:
approccio semplice e diretto in cui implementare uno HTTP
filtro che aggiunge CORS
intestazione alla risposta (Jersey specifica)
public class ResponseCorsFilter implements ContainerResponseFilter {
public ContainerResponse filter(ContainerRequest req, ContainerResponse contResp) {
ResponseBuilder resp = Response.fromResponse(contResp.getResponse());
resp.header("Access-Control-Allow-Origin", "*")
.header("Access-Control-Allow-Methods", "GET, POST, OPTIONS");
String reqHead = req.getHeaderValue("Access-Control-Request-Headers");
if(null != reqHead && !reqHead.equals(null)){
resp.header("Access-Control-Allow-Headers", reqHead);
}
contResp.setResponse(resp.build());
return contResp;
}
}
Approach-2:
Completamente attuare CORS come per le sue specifiche, vale a dire la gestione delle richieste di preflight e il supporto di tutte le intestazioni. Codice sorgente ispezionato di una tale implementazione java open source cors-filter
La mia domanda è quale approccio dovrebbe essere presa quando? Quale potrebbe essere il lato negativo di approccio-1 vs approccio-2?
Il mio caso d'uso è tutte le origini/i metodi possono essere consentiti e l'intestazione HTTP Authorization
fa parte di tutte le richieste REST
. Sono propenso all'approccio 1 in quanto sembra che la maggior parte delle impostazioni CORS predefinite siano sufficienti per il mio caso d'uso, ma non sono sicuro che se non avessi le specifiche complete CORS implementate sul lato server creerebbe qualsiasi problema.
grazie per la tua risposta, sì ogni richiesta dovrebbe essere etichettato con un token pubblico memorizzato in intestazione di autorizzazione quale server sul ricevente convalida prima di fare qualsiasi elaborazione. – harsh