Problema com CORS caso adicione cabeçalho

Angular

REST

TypeScript

CodeIgniter

PHP

12/02/2022

Pessoal, bom dia... estou com um problema, toda vez que eu coloco um Header na minha chamada eu recebo erro de CORS.

Fiz todo o código normalmente sem Headers, executei e recebi erro de CORS, então naturalmente no meu backend eu adicionei:

		$response = service(''''response'''');
		$response->setHeader(''''Access-Control-Allow-Origin'''', ''''*'''');
		$response->setHeader(''''Access-Control-Allow-Methods'''', ''''GET, PUT, POST'''');
		$response->setHeader(''''Access-Control-Allow-Headers'''', ''''Content-Type, Origin, Access-Control-Allow-Headers, Authorization, X-Requested-With, Token, Accept'''');


Refiz a chamada e TUDO PERFEITO, o Angular pegava a informação.

Então fiz todo o resto, porem como em um momento vou precisar enviar um Token, criei um Header:

    const httpOptions = {
      headers: new HttpHeaders({
        ''''Content-Type'''':  ''''application/json'''',
        ''''Token'''': ''''ABC''''
      })
    };


Após isso voltou os erros de CORs, agora de outra forma:

Response to preflight request doesn''''t pass access control check: It does not have HTTP ok status.

Já tentei de tudo, se eu tiro o Header funciona, se eu coloco da problema.

Se enviar assim recebo erros:

  getProducts(): Observable<Products[]>{
    return this.httpClient.get<Products[]>(this.url + ''''products'''', httpOptions)
    .pipe(
      retry(3),
      catchError(this.handleError))
  }


Se enviar assim, a chamada funciona com perfeição:

  getProducts(): Observable<Products[]>{
    return this.httpClient.get<Products[]>(this.url + ''''products'''', httpOptions)
    .pipe(
      retry(3),
      catchError(this.handleError))
  }


Já tentei de tudo, o pior que eu já usava assim, somente agora estou tendo problemas com isso, já tentei muitas coisas, perdi 5 horas literalmente...

Meu front é Angular + Framework Ionic e meu backend é Codeigniter 4 PHP

Alguém sabe o que pode ser ? Vou precisar enviar Token.
Rodrigo Ventura

Rodrigo Ventura

Curtidas 0

Respostas

Rodrigo Ventura

Rodrigo Ventura

12/02/2022

Pessoal...parece que resolveu.

Por algum motivo só funcionou após forçar o header no backend de outra forma, sem ser a nativa do Codeigniter 4, dessa forma:

		header('Access-Control-Allow-Origin: *');
		header("Access-Control-Allow-Headers: X-API-KEY, Origin, X-Requested-With, Content-Type, Accept, Access-Control-Request-Method, Token");
		header("Access-Control-Allow-Methods: GET, POST, OPTIONS, PUT, DELETE");
		if($_SERVER['REQUEST_METHOD'] === 'OPTIONS'){
			exit();
		}


Obrigado e abraço.
GOSTEI 0
POSTAR