2017-12-20 10 views
1

私はCORSヘッダーが新しく、スプリングブートで実装しています。私は要求の本文を受け入れるPOSTサービスでCORSヘッダーを有効にしています。

実際にポストリクエストが呼び出されたときに、実際にポストリクエストが呼び出されたときは常に応答ボディ "無効なCORSリクエスト"で403が返されます。

私は以下でスプリングブートCORSヘッダー

は、私はクラスの最上部にcrossOriginを添加することによって試験及び方法の上部いるスニペット..ほぼすべての春のドキュメントおよびすべてのGoogle/stackoverflowの議論を読んだが、私は何をmissing..huhています見つけることができませんでした運がない。 POSTメソッドの場合

@CrossOrigin(origins = "https://domain/", allowCredentials = "false") 
@RequestMapping(value = ApplicationConstants.URI_PATH) 
class MainController { 
     @RequestMapping(value = '/postMethod', method = RequestMethod.POST) 
     Map<String, Object> postMethod(HttpServletResponse servletResponse, 
     @RequestBody(required = false) AccessToken requestedConsumerInfo) {...} 

- プリフライトリクエストが呼び出され、結果は200が、メインPOST呼び出しが戻る403

OPTIONSとコールされている:POSTとステータスコード200

Response headers (616 B) 
Access-Control-Allow-Credentials true 
Access-Control-Allow-Headers content-type 
Access-Control-Allow-Methods POST 
Access-Control-Allow-Origin https://domain 
Allow GET, HEAD, POST, PUT, DELETE, OPTIONS, PATCH 
Cache-Control max-age=0, private, no-cache, …roxy-revalidate, no-transform 
Connection close 
Content-Length 0 
Date Wed, 20 Dec 2017 17:57:14 GMT 
Pragma no-cache 
Server nginx/1.9.1 
Strict-Transport-Security max-age=63072000; includeSubdomains; 
Vary Origin,User-Agent 
X-Frame-Options SAMEORIGIN 
X-XSS-Protection 1; mode=block 

Request headers (512 B) 
Accept text/html,application/xhtml+xm…plication/xml;q=0.9,*/*;q=0.8 
Accept-Encoding gzip, deflate, br 
Accept-Language en-US,en;q=0.5 
Access-Control-Request-Headers content-type 
Access-Control-Request-Method POST 
Connection keep-alive 
Host domain 
Origin https://domain 
User-Agent Mozilla/5.0 (Windows NT 6.1; W…) Gecko/20100101 Firefox/57.0 

コール:ステータスコード403

Response headers (364 B) 
Cache-Control max-age=0, private, no-cache, …roxy-revalidate, no-transform 
Connection close 
Content-Length 20 
Date Wed, 20 Dec 2017 17:57:14 GMT 
Pragma no-cache 
Server nginx/1.9.1 
Strict-Transport-Security max-age=63072000; includeSubdomains; 
Vary User-Agent 
X-Frame-Options SAMEORIGIN 
X-XSS-Protection 1; mode=block 

Request headers (2.507 KB) 
Accept application/json, text/plain, */* 
Accept-Encoding gzip, deflate, br 
Accept-Language en-US,en;q=0.5 
Connection keep-alive 
Content-Length 102 
Content-Type application/json 
Cookie rxVisitor=1513720811976ARCUHEC…B4SL3K63V8|6952d9a33183e7bc|1 
Host domain 
Origin https://domain 
Referer https://domain/home/account/register 
User-Agent Mozilla/5.0 (Windows NT 6.1; W…) Gecko/20100101 Firefox/57.0 

これは動作していないので、グローバル設定だけでなく、上記のスニペットと一緒に追加してテストしましたが、運はありません。プリフライトOPTIONS要求に

@Bean 
    public WebMvcConfigurer corsConfigurer() { 
     return new WebMvcConfigurerAdapter() { 
      @Override 
      void addCorsMappings(CorsRegistry registry) { 
       super.addCorsMappings(registry); 
       registry.addMapping(ApplicationConstants.MEMBER_URL_PATH) 
         .allowedOrigins("https://domain/") 
         .allowedMethods(HttpMethod.GET.toString(), 
            HttpMethod.POST.toString(), HttpMethod.PUT.toString()); 
      } 
     } 
    } 

答えて

2

、サーバはすべての(あなたはすでにこれをやっているように見える)以下で応答する必要があります「、実際のP​​OSTリクエストで

Access-Control-Allow-Origin, Access-Control-Allow-Methods, Access-Control-Allow-Headers, Access-Control-Allow-Credentials (if cookies are passed)

あなたを少なくともAccess-Control-Allow-OriginAccess-Control-Allow-Credentialsを返す必要があります。あなたは現在、POST応答のためにそれらを戻していません。

+0

しかし、「あなたは現在、POST応答のために戻していません。 –

+0

実際にあなたは私に「アクセス制御許可の認証(クッキーが渡された場合)」というヒントをくれました。私はクッキーを設定し、問題を引き起こしていたコントローラでallowCredentials = "false"を設定していました。ご協力いただきありがとうございます! –

関連する問題