IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Angular Discussion :

Acces Control Allow Header


Sujet :

Angular

  1. #1
    Membre confirmé
    Femme Profil pro
    Développeur Web
    Inscrit en
    Mars 2021
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2021
    Messages : 82
    Par défaut Acces Control Allow Header
    Bonjour,

    Sur mon projet angular, j'ai crée une api en PHP natif. Tous mes fichiers PHP sont construit de la même manière. Mais lors de la lecture de certains fichier j'ai cette erreur qui resort.

    Access to XMLHttpRequest at 'http://localhost:8888/MoutteCAPI/backend/api/partner/loginPartner.php' from origin 'http://localhost:4203' has been blocked by CORS policy: Request header field authorization is not allowed by Access-Control-Allow-Headers in preflight response.
    Voici le code de mon fichier PHP

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    <?php
    header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Authorization");
    header("Access-Control-Allow-Origin: *");
    header("Content-Type: application/json");
    header("Access-Control-Allow-Credentials", "true");
    header("Access-Control-Allow-Methods", "GET,HEAD,OPTIONS,POST,PUT");
     
     
    include_once("../../config/Database.php");
    include_once "../../models/Partner.php";
     
    $db = new Database();
    $conn = $db->connect();
    $partner = new Partner($conn);
     
    $decodedData = json_decode(file_get_contents("php://input"));
    $partner->usernamePartner = $decodedData->usernamePartner;
    $password = htmlspecialchars($decodedData->password);
     
    $partnerExists = $partner->searchPartnerByUsername($partner);
     
    //Si un partner existe avec cet username et que le password matche
    if (!empty($partnerExists)) {
    	if (password_verify($password, $partnerExists['mixedPassword'])) {
    		echo json_encode($partnerExists);
    	} else {
    		echo json_encode('Le mot de passe est erroné');
    	}
    } else {
    	echo json_encode('Le partnenaire n\'existe pas');
    }

    et voici le code de mon service angular auth.service

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    import { Injectable } from '@angular/core';
    import { User } from './user';
    import { Observable, throwError } from 'rxjs';
    import { catchError, map } from 'rxjs/operators';
    import { HttpClient, HttpHeaders, HttpErrorResponse } from '@angular/common/http';
    import { Router } from '@angular/router';
     
    @Injectable({
      providedIn: 'root'
    })
    export class AuthService {
      endpoint: string = 'http://localhost:8888/MoutteCAPI/backend/api/partner/loginPartner.php';
      headers = new HttpHeaders().set('Content-Type', 'application/json');
      currentUser = {};
     
      constructor(
        private http: HttpClient,
        public router: Router
      ) {
      }
     
      // Sign-in
      signIn(user: User) {
        return this.http.post<any>(`${this.endpoint}`, user)
          .subscribe((res: any) => {
            localStorage.setItem('access_token', res.token)
            this.getUserProfile(res._id).subscribe((res) => {
              this.currentUser = res;
              this.router.navigate(['user-profile/' + res.msg._id]);
            })
          })
      }
     
      getToken() {
        return localStorage.getItem('access_token');
      }
     
      get isLoggedIn(): boolean {
        let authToken = localStorage.getItem('access_token');
        return (authToken !== null) ? true : false;
      }
     
      doLogout() {
        let removeToken = localStorage.removeItem('access_token');
        if (removeToken == null) {
          this.router.navigate(['log-in']);
        }
      }
      // User profile
      getUserProfile(id): Observable<any> {
        let api = `http://localhost:8888/MoutteCAPI/backend/api/partner/listPartner.php?idPartner=${id}`;
        return this.http.get(api, { headers: this.headers }).pipe(
          map((res: Response) => {
            return res || {}
          }),
          catchError(this.handleError)
        )
      }
     
      // Error
      handleError(error: HttpErrorResponse) {
        let msg = '';
        if (error.error instanceof ErrorEvent) {
          // client-side error
          msg = error.error.message;
        } else {
          // server-side error
          msg = `Error Code: ${error.status}\nMessage: ${error.message}`;
        }
        return throwError(msg);
      }
    }
    le code de authconfig.interceptor.ts
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    import { Injectable } from "@angular/core";
    import { HttpInterceptor, HttpRequest, HttpHandler } from "@angular/common/http";
    import { AuthService } from "./auth.service";
     
    @Injectable()
     
    export class AuthInterceptor implements HttpInterceptor {
        constructor(private authService: AuthService) { }
     
        intercept(req: HttpRequest<any>, next: HttpHandler) {
            const authToken = this.authService.getToken();
            req = req.clone({
                setHeaders: {
                    Authorization: "Bearer " + authToken
                }
            });
            return next.handle(req);
        }
    }
    et celui de mon component signin.component.ts

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    import { Component, OnInit } from '@angular/core';
    import { FormBuilder, FormGroup } from "@angular/forms";
    import { AuthService } from './../../shared/auth.service';
    import { Router } from '@angular/router';
     
    @Component({
      selector: 'app-signin',
      templateUrl: './signin.component.html',
      styleUrls: ['./signin.component.css']
    })
    export class SigninComponent implements OnInit {
     
      signinForm: FormGroup;
     
      constructor(
        public fb: FormBuilder,
        public authService: AuthService,
        public router: Router
      ) {
        this.signinForm = this.fb.group({
          usernamePartner: [''],
          password: ['']
        })
      }
     
      ngOnInit() { }
     
      loginUser() {
        this.authService.signIn(this.signinForm.value)
      }
     
    }
    Qu'est ce que je dois faire pour que cela fonction ?

  2. #2
    Membre très actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2019
    Messages
    707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2019
    Messages : 707
    Par défaut
    les problèmes de CORS sont du coté serveur

    ton serveur PHP doit autorisé de communiquer avec l'application donc l'url du projet angular

    voir CORS / PHP

  3. #3
    Membre confirmé
    Femme Profil pro
    Développeur Web
    Inscrit en
    Mars 2021
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2021
    Messages : 82
    Par défaut
    Même si il y a que ce fichier qui plante ? alors que touts les fichiers PHP sont construit de la même manière.

    Je vais post sur le PHP

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Erreur Accès CORS Access-Control-Allow-Origin
    Par angie13003 dans le forum Angular
    Réponses: 1
    Dernier message: 10/05/2021, 19h44
  2. CORS / Access-Control-Allow- Headers
    Par adrienfehr dans le forum Sécurité
    Réponses: 2
    Dernier message: 04/06/2020, 20h47
  3. Réponses: 4
    Dernier message: 26/02/2019, 09h32
  4. Service Rest et Access-Control-Allow-Headers
    Par clem_alain dans le forum Services Web
    Réponses: 1
    Dernier message: 24/08/2015, 08h05
  5. [Débutant] Access Control Allow Headers
    Par Ma29200 dans le forum ASP.NET Ajax
    Réponses: 2
    Dernier message: 21/03/2013, 19h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo