使用Jersey 透過JAX-RS 處理CORS
使用Jersey 透過JAX-RS 處理CORS
問題: 您在處理請求時遇到CORS 問題與JAX-RS 和澤西島。具體來說,伺服器未設定必要的CORS 標頭,導致錯誤「請求的資源上不存在'Access-Control-Allow-Origin'標頭。」
解決方案:要使用Jersey 處理JAX-RS 中的CORS,您需要實作ContainerResponseFilter。實現的差異取決於您使用的是 Jersey 1.x 還是 2.x。
import javax.ws.rs.container.ContainerRequestContext; import javax.ws.rs.container.ContainerResponseContext; import javax.ws.rs.container.ContainerResponseFilter; import javax.ws.rs.core.MultivaluedMap; @Provider public class CORSFilter implements ContainerResponseFilter { @Override public void filter(ContainerRequestContext requestContext, ContainerResponseContext responseContext) { MultivaluedMapJersey 2.x:headers = responseContext.getHeaders(); headers.add("Access-Control-Allow-Origin", "*"); headers.add("Access-Control-Allow-Headers", "CSRF-Token, X-Requested-By, Authorization, Content-Type"); headers.add("Access-Control-Allow-Credentials", "true"); headers.add("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS, HEAD"); } }
import javax.ws.rs。容器.ContainerRequestContext;
導入 javax.ws.rs.container.ContainerResponseContext;
導入 javax.ws.rs.container.ContainerResponseFilter;
導入 javax.ws.rs.core.MultivaluedMap;
@提供者
公共類別 CORSFilter 實作 ContainerResponseFilter {
@覆蓋
公用無效過濾器(ContainerRequestContext requestContext,ContainerResponseContext responseContext){
MultivaluedMap
import javax.ws.rs.container.ContainerRequestContext; import javax.ws.rs.container.ContainerResponseContext; import javax.ws.rs.container.ContainerResponseFilter; import javax.ws.rs.core.MultivaluedMap; @Provider public class CORSFilter implements ContainerResponseFilter { @Override public void filter(ContainerRequestContext requestContext, ContainerResponseContext responseContext) { MultivaluedMap澤西 1.x:headers = responseContext.getHeaders(); headers.add("Access-Control-Allow-Origin", "*"); headers.add("Access-Control-Allow-Headers", "CSRF-Token, X-Requested-By, Authorization, Content-Type"); headers.add("Access-Control-Allow-Credentials", "true"); headers.add("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS, HEAD"); } }
import com.sun.jersey.spi.container.ContainerResponse; 導入 com.sun.jersey.spi.container.ContainerResponseFilter; @提供者 公共類別 CORSFilter 實作 ContainerResponseFilter { @覆蓋 公用ContainerResponse過濾器(ContainerResponse回應){ response.getHttpHeaders().add("Access-Control-Allow-Origin", "*"); response.getHttpHeaders().add("Access-Control-Allow-Headers", "CSRF-Token, X-Requested-By, Authorization, Content-Type"); response.getHttpHeaders().add("Access-Control-Allow-Credentials", "true"); response.getHttpHeaders().add("Access-Control-Allow-Methods", "GET、POST、PUT、DELETE、OPTIONS、HEAD"); 返迴響應; } }
請參閱 RESTeasy 中的 CORSFilter 實現,以了解更全面的資訊 範例。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3