-3
votes

Impossible d'appeler le poste de l'interface utilisateur angulaire donne 405

Je sais qu'il y a déjà comme 100 de question, mais le postit comme ils ne résolvent pas mon problème

Donc, j'ai une configuration réseau multipose qui est opérationnelle. Nous avons des API d'accéder au réseau. Le problème est que je suis capable d'appeler la demande postale du facteur, mais lorsque j'appelle la même chose de l'interface utilisateur angulaire, cela ne fonctionne pas. p>

Juste pour ajouter Je suis bien conscient de la façon dont le navigateur et le postman gère la demande postale, mais malheureusement, je ne suis pas capable de faire fonctionner cela. P>

Je suis bien conscient que lorsque nous appelons un Méthode 'Post' Le navigateur Envoyez la demande «Options», mais je continue à obtenir 405. J'ai vérifié le code mais incapable de trouver une réponse. Ci-dessous mon code angulaire: - P>

let oheaders: HttpHeaders = new HttpHeaders();
oheaders = oheaders.set('Content-Type','text/plain');
oheaders = oheaders.set('apikey','<apikey>');


11 commentaires

Y a-t-il quelque chose dans le corps de réponse du serveur?


En savoir plus sur Cors. Pleinement. Postman n'est pas un navigateur, mais un outil DEV donc une demande de pré-feu, etc. n'est pas faite. 405 est la méthode non autorisée, c'est-à-dire que le serveur doit permettre aux postes non seulement obtenir des demandes


@Andrewallen J'ai vérifié le serveur CORS et YES le permet.


@Willalexander malheureusement non, il n'y a rien dans le corps de réponse


Pouvez-vous poster des en-têtes de demande et de réponse?


@Andrewallen Ci-dessous est mon en-tête de demande d'en-tête d'en-tête d'accès à accessoires-Demande-Demande-Demande-Demande-Demande-Demande-Demande-Méthode: Post Origine: Référence: User-Agent: Mozilla / 5.0 (Macintosh; Intel; Intel Mac OS X 10_14_3) Applewebkit / 537.36 (KHTML, comme Gecko) Chrome / 74.0.3729.169 Safari / 537.36


@Andrewallen ci-dessous est l'en-tête de réponse. 'Code'Access-Control-Autory-Autorys-Autorités: Faux d'accès-Control-Autory-Autorités: Longueur de contenu, Date, X-VCAP-Demand-ID, Strict-Transport-Secur-Secur-Secur-Control-Lecteurs-APPRES-APPORTÉ: obtenir , Tête, post, post, delete, connectez, options, trace, accès au patch-contrôle-autorisation-Origine: * Access-Control-exsent-têtes: longueur de contenu, date, X-VCAP-Demand-ID, Strict-Transport -Seecurity contenu-longueur: 0 Type de contenu: Application / JSON; Charset = UTF-8 Date: Wed, 29 mai 2019 19:48:31 GMT


Le serveur pourrait-il répondre 405 à la demande d'options? Ou est-ce définitivement à la demande postale? Avez-vous certainement vérifié à 100% vos URL?


@Willalexander Oui, le serveur donne 405 pour options que lorsque vous faites un navigateur de poste envoie une demande d'options d'abord. Si vous vérifiez l'en-tête de réponse que j'ai affiché "Access-Control-Autory-Méthodes: Obtenez, la tête, la publication, la connexion, la suppression, la connexion, les options, la trace, le serveur" permettent des options.


Access-Control-Autoriser les informations d'identification: Faux?


@Andrewallen oui c'est ce qui vient en-tête de réponse.


3 Réponses :


4
votes

edit forte>

J'ai raté la partie où vous mentionnez MultiChain. Comme il n'ya aucun moyen de contourner les Cors, l'ajout d'un serveur proxy devant le multitine est probablement la seule solution (jusqu'à ce qu'ils ajoutent du support Cors) https://www.multichain.com/qa/9805/how-a-Anable-cors-in-multiciait P >

Réponse originale forte> p>

Vous devriez lire sur CORS , mais votre navigateur envoie une requête CODE> Options CODE> Options CODE> à votre API car votre backend est sur un autre domaine / port de votre fichier angulaire. . Donc, le navigateur vérifie réellement avec le backend, en utilisant cette requête code> code>, s'il est autorisé à effectuer un Publier code> Demande à l'API. P>

IT Fonctionne à l'aide de Postman puisque les navigateurs implémentent des Cors, mais ne reposent pas de clients tels que Postman. P>

Le problème est que votre serveur de backend ne permet pas options code> Demandes et renvoie un code d'état 405 pour dire que cette méthode n'est pas autorisée. Vous devez activer cette méthode pour mettre en œuvre des Cors. P>

Vous pouvez activer CORS directement dans votre code d'application Backend FORT> (Utilisation de NODEJS, PHP, .NET ...) ou directement à la Niveau de serveur Web (NGinx / Apache / IIS) P>

Lorsqu'il est touché avec une demande code> de la demande code>, votre backend doit renvoyer un code d'état de 200 HTTP (non 405), ainsi que les en-têtes suivants P>

Access-Control-Allow-Origin: http://yoursite.com (or use * for debugging)
Access-Control-Allow-Methods: GET, POST, OPTIONS (and PUT/DELETE if needed)
Access-Control-Allow-HEADERS: apikey, content-type


2 commentaires

J'accepte complètement votre point que j'ai travaillé avec plusieurs applications de développement Web et je sais très bien sur Cors. Je pense que tout le monde manque un point important dans la question qui est. C'est un réseau "multichamis" que j'ai hébergé. Si cela aurait été un autre backend, je suis sûr que j'aurais bien fait la manipulation des options avant de poster la question. Le "MultiChage" est un réseau de blocs bloquants que vous pourriez être conscient, a-t-elle sa propre API qui n'est pas développée par nous.


@Vishesh vous avez raison, je l'ai manqué. La seule solution à laquelle je pourrais penser serait d'utiliser un backend de proxy, car il n'ya aucun moyen de contourner les CORS du navigateur. MultiChain.com/qa/9805/how-to- Activer-Cors-in-MultiChain



-1
votes

Vous devez activer l'origine Cors, en utilisant cette extension chromée ici, voici Un lien ou des développeurs de backend doit ajouter des en-têtes dans leur code sur les méthodes de service.


2 commentaires

Et s'il a beaucoup d'utilisateurs? Je ne pense pas que vous puissiez tout demander d'installer un plugin pour que le site Web fonctionne pour eux.


NO Suis Suis à l'intention des objectifs de développement uniquement, cependant, de côté, ils ajoutent d'annotation pour la question de l'origine CORS, il n'y a pas de problème à la production.



-1
votes

problème CORS

405 "(méthode non autorisée)" réponse que le point de terminaison API Foursquare n'est pas configuré pour gérer les demandes d'options. Donc, le pré-feu échoue et votre navigateur ne passe jamais à la poste pour demander votre code que votre code tente d'envoyer.


0 commentaires