Je viens tout juste de commencer à utiliser Postman pour tester une API à laquelle je m'intègre.
J'ai l'erreur suivante qui continue à apparaître
Demande CORS invalide
Notez les points suivants:
Invalid CORS request
Erreur.Ce que j'ai trouvé jusqu'à présent:
Juste au cas où quelqu'un aurait le même problème, voici comment le résoudre. Allez à https://www.getpostman.com/docs/capture dans votre chrome navigateur). Cliquez sur l'extension d'intercepteur, puis choisissez ajouter à chrome. Une fois que c'est ajouté, il y a une nouvelle icône en haut à droite du navigateur et du facteur qui ressemble à un feu de signalisation. Dans le facteur, cliquez dessus et il devient vert. Ajoutez ensuite un en-tête à chaque demande adressée à troisième lumière. Chaque en-tête est composé du nom de l'en-tête et d'une valeur. Commencez à taper sur le nom de l'en-tête et une liste d'en-têtes http autorisés s'affiche. Choisissez "Origine". Dans la cellule correspondant à la valeur, tapez simplement le signe l'URL complète de votre serveur. (N'oubliez pas le 'http: //' ou 'https: //') .
L'autre matériau parle de Access-Control-Allow-Method header
, preflight requests
... et il existe un organigramme illustrant Apache Tomcat du flux CORS.
Voici la réponse que vous avez trouvée à nouveau:
Juste au cas où quelqu'un aurait le même problème, voici comment le résoudre. Allez à https://www.getpostman.com/docs/capture dans votre chrome navigateur). Cliquez sur l'extension d'intercepteur, puis choisissez ajouter à chrome. Une fois que c'est ajouté, il y a une nouvelle icône en haut à droite du navigateur et du facteur qui ressemble à un feu de signalisation. Dans le facteur, cliquez dessus et il devient vert.
... Avec le bit en gras traduit:
Ajoutez ensuite un en-tête à votre demande. La clé d'en-tête doit être "Origine" et la valeur d'en-tête doit être l'URL complète de votre serveur (n'oubliez pas le
http://
ouhttps://
).
Notez que Chrome/Postman ne vous permettra pas d'ajouter un en-tête avec une clé d'origine sans le plugin Interceptor.
Notez également qu'au moins sur mon système, l'icône Interceptor ne ressemble plus à un feu de signalisation.
Si votre code côté service principal recherche l'origine de la demande (juste pour éviter une attaque CORS), vous pouvez être confronté à ce problème lors du test de votre API Rest par le biais de postman.
Comment résoudre ce problème??
Vous devez installer un Chrome appelé Postman Interceptor ( https://chrome.google. com/boutique en ligne/détail/postman-interceptor/aicmkgpgakddgnaphhhpliifpcfhicfo? hl = en ).
Après avoir installé avec succès ce plugin, dans votre client Postman, vous pouvez voir une petite icône appelée Postman Interceptor. Vous devez l'activer/désactiver pour l'activer.
Maintenant, vous pouvez ajouter un en-tête de requête comme ci-dessous
RequestHeader Key "Origin" RequestHeader Value "URL de votre base d'application"
Maintenant, vous devriez être capable de surmonter les problèmes de la SCRO auxquels vous faites face.
Il semble que notre serveur voie dans un manuel de Postman HTTP POST que la source est invalide car elle provient de Postman sous la forme "chrome-extension: // fhbjgbiflinjbdggehcddcbncdddomop"
Vous ne savez pas pourquoi ni comment résoudre le problème du côté client/facteur. Il semble que notre serveur le rejette correctement tel quel et émet un 403.
La valeur de l'en-tête "Origin" définie dans la requête Postman doit être autorisée dans le backend de l'API. Par exemple, l’utilisation de Spring Boot for API devrait avoir la suite:
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Value("${cors.allowedOrigins}")
private String allowedOrigins;
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOrigins(allowedOrigins)
.allowedMethods("*")
.allowedHeaders("*");
}
}
où allowedOrigins est défini à l'aide de application.properties
propriété cors.allowedOrigins
ayant une liste des origines autorisées, séparées par des virgules, par exemple:
cors.allowedOrings=http://localhost:8080,http://example.com
et définissez la valeur "Origine" dans Postman sur n'importe quelle URL de cors.allowedOrigins