GlassFish: How to set Access-Control-Allow-Origin header

后端 未结 4 682
没有蜡笔的小新
没有蜡笔的小新 2020-12-05 21:49

I am using the latest version of GlassFish. I want to set the Access-Control-Allow-Origin header in response so that my API which is hosted on GlassFish can be called from a

4条回答
  •  时光取名叫无心
    2020-12-05 22:44

    Since you use the tag java-ee-6, I believe @Provider isn't supported. I used the following code, based on the javaee6 tutorial:

    import java.io.IOException;
    import java.util.logging.Logger;
    import javax.servlet.Filter;
    import javax.servlet.FilterChain;
    import javax.servlet.FilterConfig;
    import javax.servlet.ServletException;
    import javax.servlet.ServletRequest;
    import javax.servlet.ServletResponse;
    import javax.servlet.annotation.WebFilter;
    import javax.servlet.http.HttpServletResponse;
    
    @WebFilter(filterName = "AddHeaderFilter", urlPatterns = {"/*"})
    public class ResponseFilter implements Filter {
    
      private final static Logger log = Logger.getLogger(ResponseFilter.class.getName() );
    
      @Override
      public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        if (response instanceof HttpServletResponse) {
          log.info("Adding headers");
          HttpServletResponse http = (HttpServletResponse) response;
          http.addHeader("Access-Control-Allow-Origin", "*");
          http.addHeader("Access-Control-Allow-Credentials", "true");
          http.addHeader("Access-Control-Allow-Methods", "GET, POST, DELETE, PUT");
        } 
        chain.doFilter(request, response);
    }
    

提交回复
热议问题