'Access-Control-Allow-Origin' error in Spring MVC + Zepto POST

后端 未结 4 2050
终归单人心
终归单人心 2020-12-19 17:23

I\'m trying to POST a JSON object to my Spring MVC controller, but I only receive an Access-Control-Allow-Origin error.

My controller:

@         


        
4条回答
  •  情话喂你
    2020-12-19 18:15

    If your application is configured programmatically, then you need next code in your WebApplicationInitializer implementation instead of 'xml':

    public class WebAppInitializer implements WebApplicationInitializer {
    
      @Override
      public void onStartup(ServletContext servletContext) {
          ... // your context configuration like in Spring.io tutorial
    
         // Register filter to allow cross-domain requests
         registerServletFilter(servletContext, new SimpleCORSFilter());
      }
    
      ...
    
      protected FilterRegistration.Dynamic registerServletFilter(ServletContext servletContext, Filter filter) {
        String filterName = Conventions.getVariableName(filter);
        FilterRegistration.Dynamic registration = servletContext.addFilter(filterName, filter);
        registration.setAsyncSupported(true);
        registration.addMappingForUrlPatterns(EnumSet.allOf(DispatcherType.class), false, "/*");
        return registration;
      }
    }
    

    if the filter is

    @Component
    public class SimpleCORSFilter implements Filter {
    
      public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
        HttpServletResponse response = (HttpServletResponse) res;
        response.setHeader("Access-Control-Allow-Origin", "*");
        response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
        response.setHeader("Access-Control-Max-Age", "3600");
       response.setHeader("Access-Control-Allow-Headers", "Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept");
        chain.doFilter(req, res);
      }
    
      public void init(FilterConfig filterConfig) {}
    
      public void destroy() {}
    
    }
    

提交回复
热议问题