L'ajout de X-CSRF Token-tête de manière globale à toutes les instances de XMLHttpRequest();
Je suis l'aide d'une bibliothèque tierce, qui engendre un raw XMLHttpRequest
avec new XMLHttpRequest
.
Cela contourne ma protection CSRF et obtient abattu par mon serveur rails.
Est-il un moyen dans le monde entier et ajouter un prédéfini jeton CSRF ($('meta[name=csrf-token]').attr('content')
) à TOUTES les instances de XMLHttpRequest
à l'instanciation de temps?
avez-vous essayé
Pourquoi ne vous vous voulez fixer tiers-pary bibliothèques qui ne savent pas comment communiquer avec votre api correctement?
Non, OP dit que c'est un brut
$.ajaxPrefilter
? et voici un exemple: Ajout d'un jeton CSRF pour jQuery requêtes AJAXPourquoi ne vous vous voulez fixer tiers-pary bibliothèques qui ne savent pas comment communiquer avec votre api correctement?
Non, OP dit que c'est un brut
XMLHttpRequest
!OriginalL'auteur Abraham P | 2014-06-13
Vous devez vous connecter pour publier un commentaire.
Je le recommande à intercepter les appels à la
send
méthode:Ce ne sera pas ajouter l'en-tête à l'instanciation de temps, mais juste avant l'envoi de la demande. Vous peut intercepter les appels à
new XMLHttpRequest()
ainsi, mais ce ne sera utile que vous devez attendre avec l'ajout de l'en-tête jusqu'à ce queopen
a été appelé.Vous souhaitez peut-être également inclure un test de l'URL cible de la demande, de sorte que vous ne ajouter l'en-tête lorsque l'api est appelée. Ne pas le faire pourrait fuir le jeton d'ailleurs, ou peut même briser la croix-domaine de la SCRO appels qui ne permettent pas cet en-tête.
j'ai d'abord pensé à intercepter
open
ainsi, mais je ne voulais pas répéter le code de votre réponse. Vous avez un +1 comme je l'ai vu votre message pop-up 🙂les grands esprits se rencontrent. puis-je vous demander, êtes-vous 100% ok avec ce genre de mod? il se sent un peu risqué/sale à moi, même si je ne vois pas le mal.
99%. Mêmes risques, comme toujours lorsque déconner avec builtin objets: ils peuvent être mis en œuvre différemment que vous le pensiez. En cas d'instance de méthodes spécifiques à la non-inscriptible
.send
propriétés, à lasend
méthode de ne pas hériter de.apply
toutes les bizarreries est possible (ancien S sont connus pour avoir de telles bizarreries dans leur DOM). Cependant, dans les navigateurs modernes de cette volonté de travail, au respect de la Web-IDL spec pour savoir comment mettre en œuvre l'api HTML5 avec javascript.OriginalL'auteur Bergi
vous pouvez placer l'ajax méthode open() pour ouvrir et puis de définir l'en-tête tout de suite:
OriginalL'auteur dandavis
Si vous avez besoin d'un Jquery indépendant de la solution, vous pouvez utiliser:
OriginalL'auteur ErvalhouS