web-dev-qa-db-ja.com

CORS:プリフライト要求への応答がアクセス制御チェックに合格しない:プリフライト要求ではリダイレクトは許可されていません

私はangualar jsアプリをバックエンドのスプリングブートと統合しようとしていますが、リダイレクトに直面しているため、プリフライトリクエストは許可されていません

これはopenshiftにデプロイされています。コントローラーメソッドにいくつかの注釈を追加することでcorsを有効にするように構成しました。これにより、解決に役立ちました:リクエストの着信リクエストに「Access-Control-Allow-Origin」ヘッダーがありません:CORSポリシーの問題。

    @CrossOrigin(allowedHeaders = "*", origins = "*", exposedHeaders = 
        "Access-Control-Allow-Origin", methods = {
          RequestMethod.POST, RequestMethod.GET, RequestMethod.PUT, 
    RequestMethod.DELETE, RequestMethod.HEAD,
          RequestMethod.OPTIONS, RequestMethod.PATCH, RequestMethod.TRACE })
    @RestController
    public class Controller {

   @Autowired
   Service botService;

   @Autowired
   Environment env;

   @CrossOrigin()
   @RequestMapping(value = "/jwtToken", method = {
                 RequestMethod.POST }, produces = MediaType.APPLICATION_JSON_VALUE, consumes = MediaType.APPLICATION_JSON_VALUE)
   @ResponseStatus(HttpStatus.OK)
   public ResponseEntity<UnifiedService> botConntor(                     
                 @RequestBody UnifiedInput input, HttpServletRequest request) {
          UnifiedBPMService output = botService.processBotRequest(input, request);
          return new ResponseEntity<UnifiedService>(output, HttpStatus.OK);
   }

実際のangularアプリで発生するエラーは次のとおりです:

Origin 'http://'から 'http:/// chatbot/api/jwtToken'のXMLHttpRequestへのアクセスがCORSポリシーによってブロックされました:プリフライト要求への応答がアクセス制御チェックに合格しません:プリフライトのリダイレクトは許可されていませんリクエスト。

オプションの呼び出しにより、以下のresposeが返されました。

    Request URL: http://<domain>/chatbot/api/jwtToken
    Request Method: OPTIONS
    Status Code: 302 Found
    Remote Address: 10.235.222.220:80
    Referrer Policy: no-referrer-when-downgrade
3
KaMaL

スプリングブートの場合、corsFilterをセキュリティ構成と統合する必要があります。

@Bean
CorsConfigurationSource corsConfigurationSource() {
    CorsConfiguration configuration = new CorsConfiguration();
    configuration.setAllowedOrigins(Arrays.asList({YOUR_Origin or just a "*" for testing}));
    configuration.setAllowedMethods(Arrays.asList("GET","POST"));
    configuration.setAllowedHeaders(Arrays.asList({YOUR_ALLOWEDHEADERS}));
    configuration.setAllowCredentials(true);
    UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
    source.registerCorsConfiguration("/**", configuration);
    return source;
}
0
Wassim M'hamdi