0
votes

La publication HTTP angulaire n'accepte pas la réponse JSON?

J'ai créé une API dans laravel et testé dans postman et cela fonctionne parfaitement. Mais quand je l'essaie depuis angular, cela fonctionne bien pour renvoyer une chaîne de texte mais pas pour la réponse JSON

Je l'ai recherchée sur Internet et j'ai trouvé le paramètre content-type: application / json et j'ai essayé différentes façons de définir le type de contenu dans l'en-tête mais le problème persiste

    var obj = JSON.parse('{"email":"ab@gm.com","password":"12345678"}');
    //1st type of header
    var headers_object = new HttpHeaders().set('Content-Type', 
    'application/json');

     const httpOptions = {
         headers: headers_object
     };

    //2nd type of header
        var HTTPOptions = {
            headers: new HttpHeaders({
               'Accept':'application/json',
               'Content-Type': 'application/json'
            }),
            'responseType': 'application/json' as 'json'
         }

        return this.http.post<any>(`http://127.0.0.1:8000/api/auth/login`, obj,HTTPOptions ).subscribe(resp => {
            console.log(resp);    
        });

Sortie du facteur

Postman-output

requête / réponse du réseau du navigateur entrez la description de l'image ici


0 commentaires

3 Réponses :


0
votes

renvoie this.http.post ( http://127.0.0.1:8000/api/auth/login , obj, HTTPOptions) .map ((resp: Response) => resp.json ())

j'espère que cela fonctionnera


1 commentaires

mapper ou s'abonner à la fois atteint l'API mais rien ne revient en réponse



0
votes

Fondamentalement, vous envoyez "string JSON" à la place d'un objet JSON, envoyer un objet Javascript directement au lieu d'une chaîne résoudra votre problème,

Utilisez la méthode mentionnée ci-dessous pour publier des données JSON sur le serveur,

var httpOptions = {
    headers: new HttpHeaders({
        'Accept':'application/json',
        'Content-Type': 'application/json'
    })
};

var dataToPost = {"email":"ab@gm.com","password":"12345678"}; 

this.http.post('http://127.0.0.1:8000/api/auth/login', dataToPost, httpOptions)
.subscribe(resp => {
    console.log(resp);    
});


4 commentaires

J'ai essayé mais ça ne marche pas. toujours la même réponse. Lorsque je retourne une simple chaîne de l'API, cela fonctionne bien mais pas pour JSON.


puis vérifiez votre console, il devrait afficher une erreur de CORS


non, j'ai déjà corrigé cela. même c'est le problème de CORS, la chaîne de retour ne devrait pas non plus fonctionner


chrome génère 2 entrées dans l'onglet réseau pour chaque XHR, vérifiez la deuxième requête ...



0
votes

C'était dû à CORB.

Cross-Origin Read Blocking (CORB) est un algorithme qui peut identifier et bloquez les chargements de ressources d'origine croisée douteux dans les navigateurs Web avant ils atteignent la page Web. CORB réduit le risque de fuite sensible données en les éloignant des pages Web d’origine croisée.

https://www.chromestatus.com/feature/5629709824032768

Solution exécutez Chrome en mode de sécurité Web désactivé. Cela a fonctionné pour moi https://stackoverflow.com/a/42086521/6687186

Win + R et collez

chrome.exe --user-data-dir="C:/Chrome dev session" --disable-web-security 


1 commentaires

Mais si je suis capable de travailler lors du développement, en production il se comportera de la même manière n'est-ce pas? Ou est-ce que (CORS) ne se produit que dans le développement ??