package Ġes . ja ime de ar cos . templates . configuration . rest Ċ Ċ import Ġes . ja ime de ar cos . templates . service . User ServiceImpl Ċ import Ġorg . slf 4 j . Logger Ċ import Ġorg . slf 4 j . LoggerFactory Ċ import Ġorg . springframework . core . Ordered Ċ import Ġorg . springframework . core . annotation . Order Ċ import Ġorg . springframework . http . HttpHeaders Ċ import Ġorg . springframework . http . HttpMethod . OPTIONS Ċ import Ġorg . springframework . stereotype . Component Ċ import Ġjava . io . IOException Ċ import Ġjavax . servlet .* Ċ import Ġjavax . servlet . http . HttpServletRequest Ċ import Ġjavax . servlet . http . HttpServletResponse Ċ Ċ /** Ġ ĠFilter Ġto Ġallow ĠCross ĠOrigin Ġ( C ORS ) Ġ Ġ*/ Ċ @ Component Ċ @ Order ( Ordered . HIG HE ST _ PREC ED ENCE ) Ċ class ĠC ors Filter Ġ: ĠFilter Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġlog : ĠLogger Ġ= ĠLoggerFactory . getLogger ( User ServiceImpl :: class . java ) ĊĊĠĠĠ Ġoverride Ġfun Ġinit ( filter Config : ĠFilter Config ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġlog . info (" C ORS ĠFilter Ġenabled "); ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( IOException :: class , ĠServletException :: class ) ĊĠĠĠ Ġoverride Ġfun Ġdo Filter ( servlet Request : ĠServlet Request , Ġservlet Response : ĠServlet Response , Ġfilter Chain : ĠFilter Chain ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= Ġservlet Request Ġas ĠHttpServletRequest ĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġservlet Response Ġas ĠHttpServletResponse ĊĊĠĠĠĠĠĠĠ Ġif Ġ( request . getHeader (" Origin ") Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠCORS Ġallow ance ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġorigin Ġ= Ġrequest . getHeader ( HttpHeaders . ORIGIN ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . add Header ( HttpHeaders . ACCESS _ CONTROL _ ALLOW _ ORIGIN , Ġorigin ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . add Header ( HttpHeaders . ACCESS _ CONTROL _ ALLOW _ CRED ENTIAL S , Ġ" true ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . add Header ( HttpHeaders . ACCESS _ CONTROL _ EXPOSE _ HEADERS , ĠHttp Headers . SET _ COOKIE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( request . method Ġ== ĠOPTIONS . name ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠPref light Ġresponse Ġin ĠCORS ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . status Ġ= ĠHttpServletResponse . SC _ OK ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . add Header ( HttpHeaders . ACCESS _ CONTROL _ ALLOW _ METHO DS , Ġ" GET , ĠPOST , ĠPUT , ĠP ATCH , ĠDELETE ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . add Header ( HttpHeaders . ACCESS _ CONTROL _ ALLOW _ HEADERS , Ġrequest . getHeader ( HttpHeaders . ACCESS _ CONTROL _ REQUEST _ HEADERS )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfilter Chain . do Filter ( request , Ġresponse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdestroy () Ġ{ ĊĊĠĠĠ Ġ} Ċ } Ċ