2017-12-08 40 views
1

バックエンドにはSpringブートアプリケーションが動作しています。私はいくつかのGET/POST/PUT/DELETE APIを実装しました。PUT/DELETEには403エラーがありますが、GET/POSTが動作します

フロントエンド(AngularJS)はGETとPOSTを実行できますが、はPUTとDELETEを要求すると403エラーが発生します。 私はCORSの問題を解決するために許可された起点を追加しました(POSTはそれなしでは動作しません)。

CORS設定

@Bean 
public WebMvcConfigurer corsConfigurer() { 
    return new WebMvcConfigurerAdapter() { 
     @Override 
     public void addCorsMappings(CorsRegistry registry) { 
      registry.addMapping("/**").allowedOrigins("https://xxx1.com", "https://xxx2.com"); 
     } 
    }; 
} 

CSRFセッティング:

http.csrf().disable(); 

それは今

以下

のため無効になっているDELETEの私の実装です:

@DeleteMapping("/listings/{id}") 
    public ResponseEntity<Void> deleteListings(@PathVariable Long id) { 
     log.debug("REST request to delete listings : {}", id); 
     this.listingsService.delete(id); 
     return ResponseEntity.status(HttpStatus.OK).body(null); 
    } 

誰でも手伝いできますか?本当に感謝!

+0

あなたが共有することができますを参照することもできますし、多分ここでO githubの上で、コードを示して?アダム、ありがとう、 – Carlos

答えて

1

allowedMethods("GET","POST","PUT","DELETE")according to the docsにチェーンできるようです。

これは役に立ちますか?

+0

。私は確認し、あなたに知らせるでしょう! – haifzhan

+0

このリンクも便利でしょう:https://spring.io/blog/2015/06/08/cors-support-in-spring-framework – Adam

+0

私はそれをテストしましたが運はありません。今すぐ405エラーが発生しました。 – haifzhan

0

spring-bootプロジェクトでCORSFilter.javaファイルを作成します。

@Component 
@Order(Ordered.HIGHEST_PRECEDENCE) 
public class CORSFilter implements Filter { 

    /** 
    * CORS filter for http-request and response 
    */ 
    public CORSFilter() { 
    } 

    /** 
    * Do Filter on every http-request. 
    */ 
    @Override 
    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { 
     HttpServletResponse response = (HttpServletResponse) res; 
     HttpServletRequest request = (HttpServletRequest) req; 
     response.setHeader("Access-Control-Allow-Origin", "*"); 
     response.setHeader("Access-Control-Allow-Methods", "POST, PUT, GET, OPTIONS, DELETE"); 
     response.setHeader("Access-Control-Max-Age", "3600"); 
     response.setHeader("Access-Control-Allow-Headers", "access_token, authorization, content-type"); 

     if ("OPTIONS".equalsIgnoreCase(request.getMethod())) { 
      response.setStatus(HttpServletResponse.SC_OK); 
     } else { 
      chain.doFilter(req, res); 
     } 
    } 

    /** 
    * Destroy method 
    */ 
    @Override 
    public void destroy() { 
    } 

    /** 
    * Initialize CORS filter 
    */ 
    @Override 
    public void init(FilterConfig arg0) throws ServletException { 
    } 
} 

あなたはこのポストAngular 2 Spring Boot Login CORS Problems