cors enable в поле заголовка запроса Access-Control-Allow-Origin не разрешен Access-Control-Allow-Headers в ответе перед полетом - PullRequest
0 голосов
/ 05 сентября 2018

Я использую сервис весенней загрузки для бэкэнда и угловой 6 для фронтэнда.

При весенней загрузке я включил cors с помощью.

 @Override
 public void addCorsMappings(CorsRegistry registry) {
    registry.addMapping("/interview/**").allowedOrigins("*");
 }

и я использую перехватчик для каждой услуги.

во внешней службе вызова:

headers = new Headers();
constructor(private http: Http, private logger: MLogger) {
    this.headers.set("Access-Control-Allow-Origin", "*");
    this.headers.set( 'Content-Type', 'application/json',);
    this.headers.set( 'Accept', '*');
    this.headers.set( 'sessionId', DataService.sessionId);
 }
 private options = new RequestOptions({ headers: this.headers});
  interviewCommand: InterviewCommand;
  getInterviewDetails(data: any): Promise<any> {
    const serviceURL = environment.startInterviewURL;
    return this.http
      .post(serviceURL,data, this.options)
      .toPromise()
      .then(
        interviewCommand => {
          //doing some stuff
          }
        })
      .catch(this.handleInterviewCommandError);
  }

Я получаю исключение ниже, если использую перехватчик. Без использования interepter я не получаю ошибку Cors ..

Не удалось загрузить http://localhost:7070/example/myservice: Заголовок запроса Поле Access-Control-Allow-Origin не разрешено Access-Control-Allow-Headers в предполетном ответе.

В моем перехватчике я добавил следующее:

if (request.getMethod().equals("OPTIONS")) {
        response.setHeader("Access-Control-Allow-Origin", "*");
        response.setHeader("Access-Control-Allow-Origin-Methods", "GET, POST, OPTIONS");
        response.setHeader("Access-Control-Allow-Headers", "Authorization, Content-Range, Content-Disposition, Content-Description,Origin, X-Requested-With");
        response.setHeader("Access-Control-Expose-Headers", "*");
          response.setHeader("Access-Control-Allow-Credentials", "true");
          response.setHeader("Access-Control-Max-Age", "4800");
        }

1 Ответ

0 голосов
/ 06 сентября 2018

получил ответ ...

Удален this.headers.set ("Access-Control-Allow-Origin", "*") из вашего интерфейс

и

добавлено в бэкэнд в ответе перехватчика ..

response.setHeader ( "Access-Control-Allow-Headers", «Авторизация, Content-Type, Content-Range, Content-Disposition, Content-Description, Origin, X-Requested-With, sessionId "); response.setHeader ("Access-Control-Allow-Origin", "*");

When you start playing around with custom request headers you will get a CORS preflight. This is a request that uses the HTTP OPTIONS verb and includes several headers, one of which being Access-Control-Request-Headers listing the headers the client wants to include in the request.

You need to reply to that CORS preflight with the appropriate CORS headers to make this work. One of which is indeed Access-Control-Allow-Headers. That header needs to contain the same values the Access-Control-Request-Headers header contained (or more).

https://fetch.spec.whatwg.org/#http-cors-protocol explains this setup in more detail.

решение здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...