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
3 Réponses :
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
mapper ou s'abonner à la fois atteint l'API mais rien ne revient en réponse
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); });
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 ...
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
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 ??