У меня есть restcontroller, помеченный @CrossOrigin(origins = "*", allowedHeaders = "*")
. Однако мой запрос блокируется политикой CORS, несмотря на наличие @CrossOrigin(origins = "*", allowedHeaders = "*")
на уровне контроллера.
Access to XMLHttpRequest at 'http://localhost:8080/api/v1/foo/bar' from origin 'http://localhost:4200' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.
Ниже приведен набросок кода
import lombok.AllArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.CrossOrigin;
import javax.mail.MessagingException;
import javax.validation.Valid;
import java.io.UnsupportedEncodingException;
@CrossOrigin(origins = "*", allowedHeaders = "*")
@RestController
@RequestMapping(path="/api/v1")
@AllArgsConstructor
public class SomeRestController {
@Autowired
private SomeService someService;
@PostMapping(path="/foo/bar")
public ResponseEntity<RespObject> dosomething(@Valid @RequestBody RequestDTO requestDTO)
.
.
.
//somecode
}
}
API вызывается из приложения Angular Ui.
APIService.ts
create(candidateInititationDto: CandidateInitiationDTO) {
return this.httpClient.post<RespObject>(
"http://localhost:8080/api/v1/foo/bar",
requestDTO
);
}
- На данный момент это единственный контроллер в этом микро-сервисе, и я попробовал все возможные комбинации @CrossOrigin ( origins = "", allowHeaders = ""), @ CrossOrigin,@CrossOrigin (origins = "*") на уровне контроллера и уровне метода.
Это единственный сервис Micro где @CrossOrigin не работает. Работает нормально во всех других микро сервисах.