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>');
3 Réponses :
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 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 Vous pouvez activer CORS directement dans votre code d'application 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> Publier code> Demande à l'API. P>
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>
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
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
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. P>
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.
problème CORS P>
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.