2017-06-22 3 views
2

CORS preflight request fails due to a standard headerに記載されているように、OriginAccess-Control-Request-Methodヘッダーが設定されたOPTIONSエンドポイントにリクエストを送信すると、それらはSpringフレームワークによってインターセプトされ、メソッドは実行されません。受け入れられた解決策は、403を返すSpringを停止するための注釈の使用です(@CrossOrigin)。しかし、私はSwagger CodegenでAPIコードを生成しているので、これを無効にしてOPTIONSの応答を手動で実装したいだけです。SpringでCORSサポートを完全に無効にすることはできますか?

したがって、SpringのCORS代行受信を無効にすることはできますか?

答えて

1

てみます(サポートされているニーズやメソッドを所有するためにあなたがそれをカスタマイズすることができます)、次のフィルタを追加します

@Component 
public class CorsFilter extends OncePerRequestFilter { 

    @Override 
    protected void doFilterInternal(final HttpServletRequest request, final HttpServletResponse response, 
            final FilterChain filterChain) throws ServletException, IOException { 
     response.addHeader("Access-Control-Allow-Origin", "*"); 
     response.addHeader("Access-Control-Allow-Methods", "GET, POST, DELETE, PUT, PATCH, HEAD"); 
     response.addHeader("Access-Control-Allow-Headers", "Origin, Accept, X-Requested-With, Content-Type, Access-Control-Request-Method, Access-Control-Request-Headers"); 
     response.addHeader("Access-Control-Expose-Headers", "Access-Control-Allow-Origin, Access-Control-Allow-Credentials"); 
     response.addHeader("Access-Control-Allow-Credentials", "true"); 
     response.addIntHeader("Access-Control-Max-Age", 10); 
     filterChain.doFilter(request, response); 
    } 
} 
1

を自分documentationから:

を使用している場合は春のWeb MVC

@Configuration 
@EnableWebMvc 
public class WebConfig extends WebMvcConfigurerAdapter { 

    @Override 
    public void addCorsMappings(CorsRegistry registry) { 
     registry.addMapping("/**") 
       .allowedMethods("HEAD", "GET", "PUT", "POST", "DELETE", "PATCH"); 
    } 
} 

スプリングブートを使用している場合:

@Configuration 
public class MyConfiguration { 

    @Bean 
    public WebMvcConfigurer corsConfigurer() { 
     return new WebMvcConfigurerAdapter() { 
      @Override 
      public void addCorsMappings(CorsRegistry registry) { 
       registry.addMapping("/**") 
         .allowedMethods("HEAD", "GET", "PUT", "POST", "DELETE", "PATCH"); 
      } 
     }; 
    } 
} 

ゆりゆきこう答えも正しいです。しかし、私は "カスタム"フィルタが嫌いです。

あなたがトラブルを引き起こすSpring Web Securityを持っている場合。 this SO回答を確認してください。

関連する問題