package jp.hoge.filter;
import java.util.Properties;
import javax.servlet.http.HttpServletRequest;
import javax.ws.rs.container.ContainerRequestContext;
import javax.ws.rs.container.ContainerResponseContext;
import javax.ws.rs.container.ContainerResponseFilter;
import javax.ws.rs.core.Context;
import javax.ws.rs.ext.Provider;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* ランディングページからのメール登録RESTはCORSアクセス出来るようにする。
*/
@Provider
public class CorsFilter implements ContainerResponseFilter {
private static final Logger logger = LoggerFactory.getLogger(CorsFilter.class);
// HTTPリクエストヘッダからリファラを取得する用
@Context
private HttpServletRequest servletRequest;
@Override
public void filter(ContainerRequestContext request, ContainerResponseContext response) {
// ランディングページからアクセスされるユーザ登録REST
String targetRest = "accounts/create";
// リクエストされたRESTパスがCORSアクセスを許すRESTの場合
String requestedRestPath = request.getUriInfo().getPath();
if(targetRest.equals(requestedRestPath)) {
// ランディングページURL
String permitReferer = "https://ランディングページ";
// リファラがランディングページURLだった場合、CORS許可
String referer = servletRequest.getHeader("referer");
if(referer.startsWith(permitReferer)) {
System.out.println("CORS許可");
response.getHeaders().putSingle("Access-Control-Allow-Origin", "*");
response.getHeaders().putSingle("Access-Control-Allow-Methods", "OPTIONS, GET, POST, PUT, DELETE");
response.getHeaders().putSingle("Access-Control-Allow-Headers", "Content-Type");
}
}
}
}
Jerseyで開発したRESTで任意リファラからのCORSアクセスを許可する
投稿日:
執筆者:sin7k24