ホームページ >Java >&#&チュートリアル >Jersey を使用して JAX-RS に CORS 処理を実装するにはどうすればよいですか?
Jersey を使用した JAX-RS での CORS 処理
概要
クロスオリジン リソース共有(CORS) により、Web アプリケーションと別のドメインでホストされているリソース間の安全な通信が可能になります。 RESTful API でクロスドメイン要求を許可するには、CORS の処理が不可欠です。 JAX-RS は、カスタム フィルターを使用して CORS を処理するための便利なメカニズムを提供します。
Jersey 2.x のフィルター実装
Jersey 2.x では、ContainerResponseFilter を使用できます。 CORS ヘッダーを応答に追加します。次のフィルターは、必要なヘッダーを追加します。
import javax.ws.rs.container.ContainerResponseFilter; import javax.ws.rs.container.ContainerRequestContext; import javax.ws.rs.container.ContainerResponseContext; import javax.ws.rs.core.MultivaluedMap; @Provider public class CORSFilter implements ContainerResponseFilter { @Override public void filter(ContainerRequestContext requestContext, ContainerResponseContext responseContext) { MultivaluedMap<String, String> headers = responseContext.getHeaders(); headers.add("Access-Control-Allow-Origin", "*"); headers.add("Access-Control-Allow-Headers", "Content-Type, Accept, X-Requested-With"); headers.add("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS, HEAD"); } }
フィルターの登録
CORS フィルターは、次のように ResourceConfig に登録できます。
final ResourceConfig resourceConfig = new ResourceConfig(); resourceConfig.register(CORSFilter.class);
ジャージのフィルター実装1.x
Jersey 1.x の場合、ContainerResponseFilter も同様に使用できます:
import com.sun.jersey.spi.container.ContainerResponseFilter; import com.sun.jersey.spi.container.ContainerResponse; import com.sun.jersey.spi.container.ContainerRequestContext; @Provider public class CORSFilter implements ContainerResponseFilter { @Override public ContainerResponse filter(ContainerRequestContext requestContext, ContainerResponse response) { response.getHttpHeaders().add("Access-Control-Allow-Origin", "*"); response.getHttpHeaders().add("Access-Control-Allow-Headers", "Content-Type, Accept, X-Requested-With"); response.getHttpHeaders().add("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS, HEAD"); return response; } }
Jersey 1.x の Web.xml 設定
web.xml で、フィルターを次のように構成します。以下:
<init-param> <param-name>com.sun.jersey.spi.container.ContainerResponseFilters</param-name> <param-value>com.yourpackage.CORSFilter</param-value> </init-param>
以上がJersey を使用して JAX-RS に CORS 処理を実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。