私は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
スプリングブートの場合、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;
}