X-CSRF-Token to access the REST API

Hello everyone, I am looking to recover the X-CSRF-Token to have access to the REST API, but with my code I have a 401 error. can you help me

<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>

        <script>

            function sendAjaxRequest() {

                const data = {

                    username: "admin",

                    password: "admin"

                };

                return new Promise((resolve, reject) => {

                    $.ajax({

                        url: 'http://localhost:8080/axelor-erp-6.4.14/login.jsp',

                        type: 'POST',

                        contentType: 'application/json',

                        data: JSON.stringify(data),

                        success: function(response, textStatus, jqXHR) {

                            const token = jqXHR.getResponseHeader('X-CSRF-Token');

                            // Faites ce que vous voulez avec le token ici

                            console.log('Token:', token);

                            resolve(token);

                        },

                        error: function(xhr, status, error) {

                            console.log('Erreur lors de la requête. Statut:', xhr.status);

                            console.log('Réponse serveur:', xhr.responseText);

                            reject(error);

                        }

                    });

                });

            }

            // Appeler la fonction pour envoyer la requête AJAX

            sendAjaxRequest()

                .then(token => {

                    $.ajax({

                        url: 'http://localhost:8080/axelor-erp-6.4.14/ws/rest/com.axelor.apps.base.db.Partner/search',

                        type: 'POST',

                        headers: { 'X-CSRF-Token': token },

                        data: JSON.stringify({

                            fields: ["fullName"],

                            limit: 20

                        }),

                        contentType: 'application/json'

                    }).done(response => {

                        const productNames = response.data.map(e => e.fullName);

                        const productList = $('#product-list');

                        console.log(productList);

                        productNames.forEach(name => {

                            $(`<li>${name}</li>`).appendTo(productList);

                        });

                    });

                })

                .catch(error => {

                    console.error(error);

                    // Gérer les erreurs ici

                });

Hello,

I give an answer here.
Try an ask me again if you need it

I already looked at this subject, but I don’t use php and it doesn’t give me what I need. can you help me

hmmm j’utilise pas php…

tu récupère d’abord les cookies

POST http://site/login.jsp
BODY { « username »: « demoerp », « password »: « demoerp » }
Headers { « Content-Type »: « application/json » }

Ensuite la requete

GET http://site/ws/rest/com.axelor.apps.sale.db.SaleOrder

HEADER { « Content-Type »: « application/json », « Cookie »: « [CSRF-TOKEN=99999999999999999999999; Path=/open-suite-fr; SameSite=None; Secure; JSESSIONID=ABCD; Path=/open-suite-fr; Secure; HttpOnly; SameSite=None] » }

I use a post method you can see my code on my post if you want.

Hello !

J’ai un problème similaire à celui d’Yvann.

Lorsque je fais ma requête pour le login j’obtiens un status 200 mais lorsque je cherche à récupérer les cookies via un getResponseHeader(‹ Set-Cookie ›) j’obtiens un résultat null. J’ai donc une erreur 401 lorsque je tente d’utiliser les cookies dans ma seconde requête.

Je n’ai pas très bien compris votre réponse avec n8n.io.

Bonjour,

Les cookies sont dans la réponse du status 200

n8n est une application qui permet de faire des requêtes API.
J’ai créé le node Axelor pour justement ne pas à avoir faire les requetes à la main.
On choisi le domaine et on récupère toutes les informations de son Axelor.

L’image que je viens de donner permet de voir la requete spécifique au LOGIN avec un node générique de n8n.
Le node Axelor fait cette requete en arrière plan.

Merci pour votre retour.

En fait je souhaite intégrer la réponse d’une requête à mon application web. Par exemple, lister les noms des produits en stock sur une page HTML.

Je pense que votre application n’est donc pas adaptée à mon problème mais je me trompe peut-être ?

n8n c’est de l’automatisation.
De la manière dont vous exposez votre besoin. n8n n’est pas adapté car trop lourd et pas optimisé.

Mais si n8n peut le faire et de mille façons.

Si vous avez comme nouveau besoin :

  • envoyer cette liste par email à un listing (en plus du listing HTML)
  • envoyer un message d’alerte sur votre telegram/skype/SMS …
  • donner la main à un non codeur de gérer les groupes de produits à diffuser et ceux à ne pas diffuser sur le web.

Je fais la promo de n8n, mais Axelor à son propre système aussi; Je ne l’utilise pas parce que je n’ai pas travailler dessus.

Techniquement vous devriez vous contenter de la simple requete sur votre page HTML, mais il faut assurer la sécurité de la connexion, la gestion des erreurs, la fréquence de la requête, la gestion des résultats …